ようこそ Go!Go! ASP.NET へ ログイン | 登録 | ヘルプ

寝ても覚めても.NET(?)

Visual Studio 2005 Team System、主にVisual Studio 2005 Team Foundation Serverを中心とした紹介やらTipsやらを日々つづっていく日記です。

VS2008のプライベートアクセッサ

Visual Studio 2005 Team Systemにあった単体テスト機能では
privateやinternalアクセス修飾子のメソッドをテストするために
プライベートアクセッサというものが自動生成されていました。

このファイルの中身はリフレクションを使用したメソッドへのアクセスが記述されていて
テストの際にはプライベートアクセッサを経由して簡単にNon-Publicメソッドにアクセスできました。


Visual Studio 2008でもプライベートアクセッサ機能が提供されていますが
中身がちょっと(どころではないですが)違うみたいです。
以下の図を見てみてください。Visual Studio 2008が生成したプライベートアクセッサの例です。



このように、プライベートアクセッサが参照するDLLと「Desktop」というわけのわからんものが・・・。
この「Desktop」はプライベートアクセッサのターゲットプラットフォームを決めているようです。

・Desktop
 標準的な CLR プライベート アクセサを生成
・WebSite
 Web サイトと互換性があるプライベート アクセサを生成
・Device
 スマート デバイスと互換性があるプライベート アクセサを生成

という三種類があるそうで。
これについては、コマンドラインからプライベートアクセッサを生成するツールである「Publicize」というもののヘルプに記載がありました。

このファイルを持つテストプロジェクトをコンパイルすると(この例の場合では)ClassLibrary1_Accessor.dllというファイルが生成されており
この中身をildasmなどのツールでみると、ClassLibrary1.dll内の全クラス/メソッドにアクセス可能なクラスが生成されていることがわかります。
Visual Studio 2008でのプライベートアクセッサを利用したNon-Publicメソッドのテストはこのようにして動いているんですね~。

まぁ、間違ってプライベートアクセッサを消してしまっても
テスト対象メソッドを右クリックして表示されるメニューからすぐに再生成できるので
この辺はあんまり知らなくてもいいのかもしれませんけど。

公開 07-01-2008 03:08 投稿者 libaty
タグ

コメントの通知

この投稿にコメントが付いた場合にメールを受信するには、登録してください。ここ

また次のフィードから、お気に入りのRSSリーダーを使って最新の状態を知ることもできます。 コメントのRSSフィード

コメント

コメントはありません

どのような感想ですか?

(必須) 
(オプション)
(必須) 
SkinName:iroha_Blog2
Powered by Community Server, by Telligent Systems