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; }

它工作正常。

在第一种情况下抛出错误的原因可能是什么?

Assembly.GetExportedTypes 抛出异常方法没有实现

来自 GetExportedTypes 的帮助:

获取此程序集中定义的在程序集外部可见的公共类型。

你的接口(导致这里的问题)和你的类都不是公共的。

接口的默认访问说明符为 Public,但您的类默认为 internal。所以当你说

int Math.Calculate( int a, int b){ return a + b; }

它正在工作,因为您有公共接口。如果您为内部类实现它,它将不起作用。

我不能确切地说出发生了什么,但我很确定问题与加载上下文有关。