我正在尝试动态加载一些 .dll 文件。文件是插件(目前是自己编写的),它们至少有一个实现MyInterface
. 对于每个文件,我正在执行以下操作:
Dictionary<MyInterface, bool> _myList;
// ...code
Assembly assembly = Assembly.LoadFrom(currentFile.FullName);
foreach (Type type in assembly.GetTypes())
{
var myI = type.GetInterface("MyInterface");
if(myI != null)
{
if ((myI.Name == "MyInterface") && !type.IsAbstract)
{
var p = Activator.CreateInstance(type);
_myList.Add((MyInterface)p, true);
}
}
}
运行此程序会导致强制转换异常,但我找不到解决方法。无论如何,我想知道为什么这根本不起作用。我正在寻找 .NET Framework 3.5 中的解决方案。
发生在我身上的另一件事是null
在上面的代码中p
添加新条目之前运行以下命令后进入:_myList
var p = type.InvokeMember(null, BindingFlags.CreateInstance, null,
null, null) as MyInterface;
p
这段代码是第一次尝试加载插件,我还没有找到原因null
。我希望有人能引导我走向正确的道路:)