Assembly.GetExportedTypes 抛出异常方法没有实现
本文关键字:实现 方法 GetExportedTypes 抛出异常 Assembly | 更新日期: 2023-09-27 18:36:29
>我正在实现具有以下定义的接口
public interface Math
{
int Calculate(int a, int b)
}
public class MathImpl : Math
{
public int Calculate(int a, int b){ return a + b; }
}
这是代码是程序集的一部分,可以正确构建
当我调用Assembly.GetExportedTypes()
时,它抛出异常方法没有实现。
Assembly assembly = Assembly.LoadFrom(filePath);
assembly.GetExportedTypes();
如果我将方法实现更改为
int Math.Calculate( int a, int b){ return a + b; }
它工作正常。
在第一种情况下抛出错误的原因可能是什么?
来自 GetExportedTypes 的帮助:
获取此程序集中定义的在程序集外部可见的公共类型。
你的接口(导致这里的问题)和你的类都不是公共的。
接口的默认访问说明符为 Public,但您的类默认为 internal。所以当你说
int Math.Calculate( int a, int b){ return a + b; }
它正在工作,因为您有公共接口。如果您为内部类实现它,它将不起作用。
我不能确切地说出发生了什么,但我很确定问题与加载上下文有关。