1

リフレクションの使用:

型のインスタンスがある場合(正確にX<Y>はわかりません)はジェネリック型 ( ) であるため、 のプロパティの値を取得するにはどうすればよいですか?YXX<T>Y

何かのようなもの:

Type yType = currentObject.GetType().GetGenericArguments()[0];

// How do I get yInstance???
var yInstance = Convert.ChangeType(???, yType);

私は____に行く必要があります:

object requiredValue = yType.GetProperty("YProperty").GetValue(yInstance, null);
4

1 に答える 1

2

以下を使用して、ジェネリック引数の PropertyInfo オブジェクトを取得します。

PropertyInfo myProperty = myGenericType.GetType().GenericTypeArguments[0].GetProperty("myPropertyName");

ここで、「0」はクラス定義のジェネリック型のインデックスで、「myPropertyName」はプロパティの名前です。その後、他の PropertyInfo オブジェクトと同じように使用します。次に例を示します。

myProperty.GetValue(obj); // Where obj is an instance of the generic type

[編集:以下の元の回答]

Y にプロパティが必要な場合は、型 T を、そのプロパティを含むインターフェイスを実装する必要がある型に制約します。例えば:

public class MyGenericClass<Y> where Y:IMyInterface

次に、ジェネリック オブジェクトをインターフェイスにキャストし、プロパティを呼び出します。

于 2012-09-05T02:03:04.687 に答える