1

「リフレクション」とは、System.Reflection 名前空間を使用することを意味します。

MSDN は、PrivateObject クラスについて次のように述べています。「テスト コードを許可します...」。私は System.Reflection 構文よりも PrivateObject 構文が好きなので、それを製品コードで使用せず、ユニットテストのみに使用する本当の理由があるのだろうか?

4

3 に答える 3

6

運用環境で PrivateObject を使用しない理由の 1 つは、テスト アセンブリ (Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll) を運用サーバーに配置する必要があることです。それは彼らがいるべき場所ではありません。しかし、あなたが働いている場所のポリシーに害がない場合は、それを使用するかどうかを決定するのはあなた次第です.

ちなみに、PrivateObject は内部で Reflection を使用しているので、とにかくそれを使用します。

動的オブジェクトを使用してプライベート メンバーを呼び出すこのソリューションを見つけました ( http://blogs.msdn.com/b/davidebb/archive/2010/01/18/use-c-4-0-dynamic-to-drastically-simplify -your-private-reflection-code.aspx )、Reflection の構文が気に入らないため。多分あなたは試してみるべきです。

于 2013-09-04T17:06:11.233 に答える
1

PrivateObject型を実際に反映するために使用することはできません。つまり、型のメンバーを取得するために使用することはできません。
事前にメンバーの名前を知っている場合にのみ使用できます。

そうは言っても、シナリオでこれらの制約が問題にならないのであれば、それを使用できない理由はわかりません。
このクラスはpublic十分に文書化されており、非推奨ではありません。

于 2013-09-04T16:41:35.023 に答える