この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 19548|答える: 0

[出典] InternalsVisibleToを使って「friend assembly」をassemblyに追加してください

[リンクをコピー]
掲載地 2017/02/06 14:28:57 | | |

C#の内部キーワードは、マークされたメソッド、フィールド、属性を現在のアセンブリ内でのみ利用可能にできますが、他のアセンブリがこの内部メソッドを使う必要があった場合はどうすればいいのでしょうか? .NETは、C++のfriendクラスに似たこの関数を実現する方法を提供しており、InternalsVisibleToを使うことができます。

これはテストを行う際によくあることで、内部メソッドでマークされた機能をテストするために別のプロジェクトが必要になるため、InternalsVisibleToを使えば、公開でないはずのメソッドを変更する必要がなくなり、ユニットテストを行うことができます。

InternalsVisibleToを使う際にはまだ注意すべき点があります。特にPublicKeyは理解しにくいので、このInternalsVisibleToの使い方について話しましょう。

まず前提を説明しましょう:Project1は機能型プロジェクトで、Project1.Test(アセンブリ名:Project1.Test.dll)はProject1のテストプロジェクトです。

1. Project1のAssembly.csファイルを開き、ファイルの最後に次の文を追加します:


PublicKey=******はProject1.Test.dll公開鍵に置き換えるべきです。公開鍵の入手方法については、記事の最後のメモセクションをご覧ください。

2. 名前空間の検証:System.Runtime.CompilerServicesがAssembly.csの名前空間参照に追加されていること。InternalsVisibleToはSystem.Runtime.CompilerServiceの名前空間にあるためです。

Notes:

1. 公開鍵はどうやって取得するのか?

A: コマンドラインで sn -tp Project1.Test.dll を使って PublicKey と PublicKeyToken を表示してください

2. Project1が強い名前のプロジェクトであれば、InternalsVisibleToはPublicKeyを指定する必要があるため、Project1.TestもInternalsVisibleToを正しく使うために強い署名を使わなければなりません。そうでなければコンパイルでエラーが生じます。Project1が強い署名を使わない場合、 Project1.Testは強い署名を使う必要がなく、InternalsVisibleToを使う場合はアセンブリ名だけで済み、PuklicKeyの設定も不要です。




先の:InternalsVisibleToAttributeは、内部メンバーを指定されたフレンドアセンブリに公開します
次に:[神話]HttpApplication オブジェクト Init メソッドは一度だけ実行されるのでしょうか?
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com