studio後でもうちょっと整形しよう・・・privateメソッドにアクセスしたい!単体テスト実行時等、privateメソッド、privateメンバにアクセスしたい事が多々あります。状態保存用のprivateメンバが一個か二個は用意されているでしょう。このprivateなメンバ・メソッドは割と単体テストの肝になると思いますが、もちろん単純にnewした程度ではこいつらにアクセスできません。以降でオススメの方法をそれぞれ実行したいと思います。以前(もちろん2008でも出来る)基本的にはSystem.Reflection名前空間の機能を使って実現できます。メソッド、メンバ共に以下の形でアクセス可能です。});InvokeMemberメソッドはobject型で値を返すので、結果に応じてキャストが必要です。InvokMethodの引数は以下となります。object[]上記のBinderクラスについては下記URLのMSDNドキュメントを参照してください・・・。上記の様なリフレクション処理はもちろん単体テストで有効ですが、以下の様な問題も有ると思います。何よりメソッド名のリファクタに対応してくれないこれらの問題に対処するために、VisualStudio2008からテストフレームワークが導入(拡張?)されました。上記、DarkSideクラスに対して、以下の様な手順でアクセス可能です。以下は、若干手直しして、テストを二つに増やしました。以下のコードを見ていただければ分かると思いますが、<クラス名>_Accessorからはprivateだろうが平然とメソッド、メンバにアクセス可能になってます。}さて、この<クラス名>_Accessorって何者なんだろう?という妄想にかられるので、クラス名を右クリックして定義を参照したところ下記のコードにたどり着きました。}}流石にぱっと中身を判断することは出来ませんが、各名前から推察するに以下な予想ができます。BaseShadowクラス内部で存分にリフレクションをしているShadowing属性でprivateなメソッド、privateなメンバを弄る元のクラスをデコレータパターン的にラッピングしてる。まとめリフレクションを使ってアクセスする方法は用途次第→単体テストに限らず使える単体テストであればAccessorを使え!出来ればリフレクションは使わないほうが良いかなぁ...。2009に参加してきましたので簡単にメモをばを公開。