1

我正在实现具有以下定义的接口

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

它工作正常。

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

4

3 回答 3

0

GetExportedTypes的帮助:

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

您的界面(导致这里出现问题)和您的课程都不是公开的。

于 2012-06-08T09:18:23.597 回答
0

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

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

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

于 2012-06-08T09:20:43.310 回答
0

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

于 2012-06-08T09:57:39.483 回答