8

C#でのJavaのデフォルト(パッケージ)アクセスに相当するものは何ですか? ありますか?特定の名前空間へのアクセスを制限する方法はありますか?

問題:

特定のメソッドへのアクセスを NUnit テストのみに制限しようとしています。JUnit では、メソッド パッケージ アクセスを作成し、テストを同じパッケージ内で、src/main/java ではなく src/test/java の下に置くことでこれを行います。 . C#で同様のことを達成するにはどうすればよいですか?

注: テストが別のアセンブリにあるため、メソッドを作成できませんinternal(NUnit 規則と同様)。それともそうですか?

4

4 に答える 4

25

C# には、パッケージまたは名前空間レベルのアクセスはありません。アセンブリ レベルのみです。これは、内部アクセスとも呼ばれます。

ただし、メソッドを内部にし、InternalsVisibleTo属性を使用してそれらを単体テスト アセンブリに公開することができます。

この投稿とこの投稿読むと役立つ場合があります。

于 2009-08-25T18:34:12.100 に答える
1

大きく異なる別の方法があります。次のように部分クラスを使用できます。

  1. ファイル#1=テスト中のコード。通常と同じように書かれていますが、「partial」キーワードを使用しています
  2. ファイル#2=単体テスト。実際の単体テストであるネストされたクラスが含まれています。

ネストされたクラスは、親クラスのすべて(プライベートメソッドを含む)にアクセスできます。ビルドプロセス(おそらくMSBuildまたはNAntスクリプト)の一部として、最終アセンブリの一部としてテストをコンパイルしないでください。テスト対象のコードは問題なく機能します。

于 2009-08-25T18:43:23.813 に答える
1

まったく同じものはありません。internalキーワードは close ですが、名前空間ではなくアセンブリによって制限されます。

internal でタグ付けされているものは、同じアセンブリ (dll、exe) 内のコードからのみアクセスできます。

于 2009-08-25T18:34:49.463 に答える
0

メソッドを内部にすることで、メソッドがアセンブリでのみ表示されるように制限できます

于 2009-08-25T18:36:18.057 に答える