「リフレクション」とは、System.Reflection 名前空間を使用することを意味します。
MSDN は、PrivateObject クラスについて次のように述べています。「テスト コードを許可します...」。私は System.Reflection 構文よりも PrivateObject 構文が好きなので、それを製品コードで使用せず、ユニットテストのみに使用する本当の理由があるのだろうか?
「リフレクション」とは、System.Reflection 名前空間を使用することを意味します。
MSDN は、PrivateObject クラスについて次のように述べています。「テスト コードを許可します...」。私は System.Reflection 構文よりも PrivateObject 構文が好きなので、それを製品コードで使用せず、ユニットテストのみに使用する本当の理由があるのだろうか?
運用環境で 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 の構文が気に入らないため。多分あなたは試してみるべきです。
PrivateObject
型を実際に反映するために使用することはできません。つまり、型のメンバーを取得するために使用することはできません。
事前にメンバーの名前を知っている場合にのみ使用できます。
そうは言っても、シナリオでこれらの制約が問題にならないのであれば、それを使用できない理由はわかりません。
このクラスはpublic
十分に文書化されており、非推奨ではありません。