【发布时间】:2020-09-07 19:23:47
【问题描述】:
我正在用 C# 编写一个插件系统。
int Length = Directory.GetFiles(@".\Plugins", "*.dll").Length;
foreach (var file in Directory.GetFiles(@".\Plugins", "*.dll"))
{
string PluginDLL = Directory.GetCurrentDirectory() + file;
Assembly asm = Assembly.LoadFrom(PluginDLL);
foreach (var type in asm.GetTypes())
{
if (type.GetInterfaces().Contains(typeof(IMyPlugin)))
{
IMyPlugin plugin = Activator.CreateInstance(type) as IMyPlugin;
if (!plugins.Any(item => item.PluginName == plugin.PluginName) &&
!plugins.Any(item => item.PluginVersion == plugin.PluginVersion))
{
plugins.Add(plugin);
ToolStripMenuItem pluginToolStripeItem = new System.Windows.Forms.ToolStripMenuItem();
pluginToolStripeItem.Name = plugin.PluginName + "ToolStripMenuItem";
pluginToolStripeItem.Text = plugin.PluginName;
ansichtToolStripMenuItem.DropDownItems.Add(pluginToolStripeItem);
//this.startseiteToolStripMenuItem.Click += new System.EventHandler(this.StartseiteToolStripMenuItem_Click_1);
}
}
}
}
所以第一个 .dll 加载成功。 当涉及到第二个 .dll 时,PluginDirectory 设置成功, 但是“asm”仍然是第一个 .dll 中的那个
为什么我用新的 PluginDirectory 调用时 asm 没有改变。
我希望你能帮助我。
最好的问候 斯蒂芬·K
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。