如何在C#中加载DLL并创建一个新实例?

时间:2011-07-28 13:56:49

标签: c# dll

我想加载一个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));
        }

2 个答案:

答案 0 :(得分:1)

System.TypeInitializationException暗示您的静态构造函数抛出异常。检查内部异常和堆栈跟踪以获取提示。

答案 1 :(得分:0)

您可能想要检查是否存在默认构造函数。如果没有,请查看您需要的参数,并使用params object[] args参数调用CreateInstance的覆盖。