反映されたプロパティからの反映された型の値の取得
-
03-07-2019 - |
質問
サードパーティのアセンブリで宣言されている内部とマークされたメンバーにアクセスする必要があります。
クラスの特定の内部プロパティから値を返したい。次に、その戻り値のプロパティから値を取得したいと思います。ただし、これらのプロパティは、このサードパーティアセンブリで宣言されている内部型である型を返します。
これを行う例は単純で、intまたはboolを返すだけです。この複雑なケースを処理するコード例を誰かに教えていただけますか?
解決
戻り値(またはPropertyInfoのPropertyType)を掘り続けるだけです:
u
sing System;
using System.Reflection;
public class Foo
{
public Foo() {Bar = new Bar { Name = "abc"};}
internal Bar Bar {get;set;}
}
public class Bar
{
internal string Name {get;set;}
}
static class Program
{
static void Main()
{
object foo = new Foo();
PropertyInfo prop = foo.GetType().GetProperty(
"Bar", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
object bar = prop.GetValue(foo, null);
prop = bar.GetType().GetProperty(
"Name", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
object name = prop.GetValue(bar, null);
Console.WriteLine(name);
}
}
他のヒント
いつでもオブジェクトとして取得し、返された型でリフレクションを使用してメソッドを呼び出し、プロパティにアクセスできます。
所属していません StackOverflow