4

ジェネリック プロパティを使用するクラスがあります。例えば:

class Person
{
    public MyGenericProperty<string> Field1
    {
        get { return field1; }
        set { field1 = value; }
    }

    private MyGenericProperty<string> field1= new MyInheritedGenericProperty<string>("Alan1");
}

このクラスを別のクラスでリフレクションで使用したいのですが、そのようなメソッドがあります

public void DoSomethingWithProperty(object sourceobject)
{
    foreach (var aProperty in sourceobject.GetType().GetProperties())
    {
        *if(aProperty.PropertyType == typeof(MyGenericProperty<>))*
        {
           *var obj = (MyGenericProperty<>)aProperty.GetValue(sourceobject, null);*
        }
    }
    return null;
}

私には2つの問題があります

1-ジェネリックプロパティの型チェックを行うにはどうすればよいですか。その例のコードでif(aProperty.PropertyType == typeof(MyGenericProperty<>))は動作しません。

2- MyGenericProperty の T は任意のクラスである可能性があり、リフレクションによって T を知らずに MyGenericProperty クラスをキャストする方法

var obj = (MyGenericProperty<>)aProperty.GetValue(sourceobject, null);

助けてくれてありがとう。

4

1 に答える 1