gpt4 book ai didi

c# - 从通过反射加载的程序集中动态解析类型

转载 作者:行者123 更新时间:2023-11-30 14:37:29 24 4
gpt4 key购买 nike

考虑 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 是一个类,它是在我在Constructor 中动态加载的Assembly 中定义的。那么,我能否以某种方式解析 ExportedClass 的类型,这样我就不必使用 dynamic

最佳答案

你有一些选择是

  • 引用实际程序集(在您的情况下可能无法动态加载它),
  • 使用类型实现的共享接口(interface)(仅当您可以编辑加载的程序集时),
  • 或者使用动态/反射

我通常会使用第二种方法。只需定义一个 ExportedClass 在另一个(共享)程序集中实现的接口(interface)。然后您可以尝试将创建的实例转换为该接口(interface)。像那样:

ISomeInterface obj = Activator.CreateInstance(typeOfClass) as ISomeInterface;

当然,这是假设您可以控制引用的库。或者,如果您要定义插件基础架构或类似的东西,则应将其作为要求包括在内。

关于c# - 从通过反射加载的程序集中动态解析类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com