我正在尝试在运行时加载和使用 DLL,这工作正常:
var pluggin = asm2.CreateInstance("ParserTest.Interface", true) as iPluggin;
但这不是(我需要遍历特定文件夹中的 DLL 文件以找到实现 iPluggin 接口的正确文件):
...
var asm = Assembly.LoadFrom(dll.FullName);
if (asm.GetExportedTypes().FirstOrDefault(q => q.GetInterface(tName) != null) == null) continue;
Project.ProcessList.Add(asm.CreateInstance(tName, true) as iPluggin);
...
在调试模式下做一些研究我发现:
asm.CreateInstance(tName, true)
返回正确的对象,但在尝试将其强制转换为 iPluggin 时,结果为空。知道为什么吗?