如何在没有 Assembly.GetCallingAssembly() 的情况下获取包含接口的程序集
How to get an assembly containing interface without Assembly.GetCallingAssembly()
我有一个 C# WinForms 应用程序和两个涉及的程序集 - 第一个包含一个接口,第二个包含实现该接口的 class。
应用程序加载第二个程序集(通过 MS Enterprise Library Unity - 即通过反射)并调用 class 方法。
我需要在使用以下代码之前记录该事实
var ApplicationInfo = Assembly.GetEntryAssembly().ToString();
var InterfaceInfo = Assembly.GetCallingAssembly().ToString();
var ImplementationInfo = Assembly.GetExecutingAssembly().ToString();
前段时间运行正常(分别获得申请,第一次组装,第二次组装)
但现在由于某些原因 GetCallingAssembly()
和 GetExecutingAssembly()
都是 return 第二个组件(包含 class 实施)。
有没有办法在没有 Assembly.GetCallingAssembly()
的情况下获得包含接口的程序集?
知道为什么 GetCallingAssembly()
开始等于 GetExecutingAssembly()
吗?
如果当前程序集中有一个类型实现接口,则必须加载定义。使用类型定义,您可以获得程序集引用:
var asm = typeof(IInterface).Assembly;
如果您有实例(例如,动态创建),则:
var asm = theObject.GetType().Assembly;
我有一个 C# WinForms 应用程序和两个涉及的程序集 - 第一个包含一个接口,第二个包含实现该接口的 class。
应用程序加载第二个程序集(通过 MS Enterprise Library Unity - 即通过反射)并调用 class 方法。
我需要在使用以下代码之前记录该事实
var ApplicationInfo = Assembly.GetEntryAssembly().ToString();
var InterfaceInfo = Assembly.GetCallingAssembly().ToString();
var ImplementationInfo = Assembly.GetExecutingAssembly().ToString();
前段时间运行正常(分别获得申请,第一次组装,第二次组装)
但现在由于某些原因 GetCallingAssembly()
和 GetExecutingAssembly()
都是 return 第二个组件(包含 class 实施)。
有没有办法在没有 Assembly.GetCallingAssembly()
的情况下获得包含接口的程序集?
知道为什么 GetCallingAssembly()
开始等于 GetExecutingAssembly()
吗?
如果当前程序集中有一个类型实现接口,则必须加载定义。使用类型定义,您可以获得程序集引用:
var asm = typeof(IInterface).Assembly;
如果您有实例(例如,动态创建),则:
var asm = theObject.GetType().Assembly;