我在运行时加载一个 DLL。DLL 和主应用程序都使用一个 DLL,它拥有让程序知道如何使用 DLL 中的某些类型的接口。在主应用程序中有一个工厂类,当主应用程序请求它继承的接口时,Dll 可以在其中设置要创建的对象类型之一。下面是从 DLL 创建对象类型的函数的精简版(主要是删除了错误处理代码)。当它被调用时,我得到一个异常,说没有为此对象定义无参数构造函数。我不知道为什么,因为它们都有无参数的构造函数。
//inside the DLL
Factory.ResovleType<ISomething>(typeof(SomethingCool));
//inside the main application
ISomething obj = Factory.CreateObject<ISomething>();
//inside the Factory Class
public static T CreateObject<T>(params object[] args)
{
T obj = (T)Activator.CreateInstance(resovledList[typeof(T)], args);
return obj;
}
public static void ResolveType<T>(Type type)
{
resovledList.Add(typeof(T), type);