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

何が起こっているのか正確にはわかりませんが、問題がload contextsに関係していることは間違いありません。

于 2012-06-08T09:57:39.483 に答える
0

GetExportedTypesのヘルプから:

このアセンブリで定義され、アセンブリの外部から参照できるパブリック型を取得します。

インターフェイス(ここで問題を引き起こします)もクラスもパブリックではありません。

于 2012-06-08T09:18:23.597 に答える
0

インターフェイスにはデフォルトのアクセス指定子がパブリックですが、クラスはデフォルトで内部に設定されています。だからあなたが言うとき

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

インターフェイス public があるため、機能しています。内部のクラスに実装すると機能しません。

于 2012-06-08T09:20:43.310 に答える