質問

サードパーティのアセンブリで宣言されている内部とマークされたメンバーにアクセスする必要があります。

クラスの特定の内部プロパティから値を返したい。次に、その戻り値のプロパティから値を取得したいと思います。ただし、これらのプロパティは、このサードパーティアセンブリで宣言されている内部型である型を返します。

これを行う例は単純で、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);
    }
}

他のヒント

いつでもオブジェクトとして取得し、返された型でリフレクションを使用してメソッドを呼び出し、プロパティにアクセスできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top