C#将汇编类转换为类型

时间:2018-10-29 10:06:16

标签: c# reflection casting

是否可以将类从外部(托管)程序集强制转换为特定接口?

我的意思是不要调用MethodInfo.Invoke(instance, parameters);,而是要做类似的事情

Assembly assembly = Assembly.LoadFrom(assemblyName);
System.Type type = assembly.GetType(typeName);
Object o = Activator.CreateInstance(type);
IYourType yourObj = (o as IYourType);

更新

我有一个具有已知接口的外部程序集,是的,我有该程序集中引用的本地程序集的本地副本。检查表明o的类型为Assembly.GetType(typeName);

1 个答案:

答案 0 :(得分:5)

好吧,我认为我们终于有足够的信息来回答这个问题。

问题是您已经创建了反射类使用的该接口的本地副本。

这将不起作用,抖动对两个接口的了解足够多,以至于它们都不相同,它返回null。

接口是2个实体之间的合同。您实际上要尝试做的就是欺骗.Net,以为它具有相同的合同,总之不会被欺骗

因为没有必要在程序集中反映接口(因为您在设计时不能使用它)。唯一可用的选项是在两个程序集之间共享该接口。这就是插件系统的工作方式。他们彼此之间足够了解,可以通过界面进行通信。