-1

アプリケーションで参照されている.Netdllがあります。C#コードでXYZというメソッドの1つにアクセスすると、エラーが発生します。

メソッド「MyClass.ABC()」によるメソッド「OtherClass.XYZ()」へのアクセスの試行が失敗しました。

VS.Netでメタデータを見ると、このメソッドXYZがパブリックスタティックとしてのみ表示されていることがわかります。ここで何が欠けているのでしょうか?

ありがとう。

4

2 に答える 2

0

私は同じ問題を抱えていました-これは私の場合に起こったことです:

  1. 定義するアセンブリ my.dll があります internal static void Foo();
  2. my.dll の定義[assembly:InternalsVisibleTo("unittests")]

  3. Foo() を呼び出すテスト アセンブリ unittests.dll があります。

  4. my.dll と unittests.dll をデプロイした test.localtestsettings があります。

巨大なジャンボを介して、testsettings ファイルは、AttributeInternalsVisibleTo を持たない古いバージョンの a.dll をデプロイしていました。

これにより、コードがコンパイル時のチェックに合格したにもかかわらず、実行時に MethodAccessException がスローされるという状況に陥りました。私の場合の原因は、表示されるべきではないアセンブリから呼び出された内部メソッドでした。これは、私がデバッグを好まなかったタイプのセキュリティ例外です。幸運を。

于 2013-06-13T08:49:43.223 に答える
0

クラス名を使用して呼び出す必要があります。例えば

public static class MyClass
{
  public static void MyMethod()
  { // Do something
  }
}

呼び出すときは、使用する必要があります

MyClass.MyMethod();
于 2012-07-09T09:07:03.740 に答える