-1

さて、私が取り組んでいるソリューションには、4 つの異なるプロジェクトが含まれています。私のプロジェクトの 1 つ (コンソール アプリケーション) が、別のプロジェクト (ライブラリ) で定義されたいくつかのクラスを参照しようとしています。唯一の問題は、呼び出されたものがライブラリでInternalとして定義されていることです。

同じソリューション内の他のアセンブリ/プロジェクトでこれらの内部クラスを使用するにはどうすればよいですか? ライブラリへの参照を追加しましたが、役に立ちませんでした。保護レベルが高すぎると言っています (内部であるため、そのアセンブリでのみ使用できます)。

4

2 に答える 2

1

通常、internal. それは、そもそもそう宣言する目的を無効にします。ただし、必要な場合は...

internalものでアセンブリを変更できる場合は、次のいずれかです。

  1. クラスを作成するpublic、または
  2. を使用して、InternalsVisibleToAttribute必要なアセンブリだけに公開します。

変更できない場合、または変更しないことにした場合は、リフレクションを使用してinternalクラスにアクセスできます。クラスで行うことの一部については、dynamicキーワードを使用して、リフレクションよりも簡単かつ高速にアクセスできるようにする必要があります。

于 2013-11-02T22:28:58.467 に答える
0

他のアセンブリの内部クラスにアクセスするには、リフレクションを使用する必要がありますが、速度が大幅に低下し、一般にコンパイラによる最適化はできません。また、やや複雑です。

内部クラスとメソッドを他のアセンブリからラップする public クラスを公開するか、単に他のアセンブリの内部クラスを public に切り替えることをお勧めします。

于 2013-11-02T22:25:10.930 に答える