考虑 DLL 中的以下代码:
public class ReceivingClass
{
private Assembly myAssembly;
private Type typeOfClass;
public ReceivingClass()
{
myAssembly = Assembly.LoadFile(@"E:\VSProjects\TestDynamicLinking\MyLib\bin\Debug\MyLib.dll");
//Can I use this type somehow to resolve the type in the below method?
typeOfClass = myAssembly.GetType("ExportedClass");
}
public bool ReceiveMethod(ExportedClass classobj)
{
return true;
}
}
所以,问题是在上面的
ReceiveMethod
中,ExportedClass
是一个在我动态加载到构造函数中的程序集中定义的类。那么,我可以以某种方式解析 ExportedClass
的类型,这样我就不必使用 dynamic
吗? 最佳答案
你有的一些选择是
我通常会使用第二种方法。只需定义一个 ExportedClass 在另一个(共享)程序集中实现的接口(interface)。然后您可以尝试将创建的实例转换为该接口(interface)。像那样:
ISomeInterface obj = Activator.CreateInstance(typeOfClass) as ISomeInterface;
当然,这是假设您可以控制引用的库。或者,如果您正在定义插件基础设施或类似的东西,您应该将其作为要求包含在内。
关于c# - 从通过反射加载的程序集中动态解析类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9210728/