我想加载一个DLL文件(如果存在),并创建一个新的实例,将其转换并传递给另一个函数。
我目前所做的是添加对DLL的引用,并创建一个实例,例如,
ConfigFileSystemRegistry.Instance.RegisterFileSystem("er://", new Efs());
我尝试动态加载它,但它提供了System.TypeInitializationException
我使用的代码是:
if (File.Exists("plugin\\Efsystem.dll"))
{
Assembly assembly = Assembly.LoadFrom("plugin\\Efsystem.dll");
Type type = assembly.GetType("Efs");
ConfigFileSystemRegistry.Instance.RegisterFileSystem("er://", (IFileSystem) Activator.CreateInstance(type));
}
答案 0 :(得分:1)
System.TypeInitializationException
暗示您的静态构造函数抛出异常。检查内部异常和堆栈跟踪以获取提示。
答案 1 :(得分:0)
您可能想要检查是否存在默认构造函数。如果没有,请查看您需要的参数,并使用params object[] args
参数调用CreateInstance的覆盖。