サードパーティのアセンブリで宣言されている、internalとマークされたメンバーにアクセスする必要があります。
クラスの特定の内部プロパティから値を返したいのですが。次に、その戻り値のプロパティから値を取得したいと思います。ただし、これらのプロパティは、内部であり、このサードパーティアセンブリで宣言されているタイプを返します。
私が見たこれを行う例は単純で、intまたはboolを返すことを示しています。誰かがこのより複雑なケースを処理するサンプルコードを教えてもらえますか?
サードパーティのアセンブリで宣言されている、internalとマークされたメンバーにアクセスする必要があります。
クラスの特定の内部プロパティから値を返したいのですが。次に、その戻り値のプロパティから値を取得したいと思います。ただし、これらのプロパティは、内部であり、このサードパーティアセンブリで宣言されているタイプを返します。
私が見たこれを行う例は単純で、intまたはboolを返すことを示しています。誰かがこのより複雑なケースを処理するサンプルコードを教えてもらえますか?
返された値 (または PropertyInfo の PropertyType) を掘り下げ続けるだけです。
あなた
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);
}
}
いつでもオブジェクトとして取得し、返された型でリフレクションを使用してそのメソッドを呼び出し、そのプロパティにアクセスできます。