3

さまざまな種類のオブジェクトを含む「オブジェクト」のリストがあります。それらすべてが持っているオブジェクトのプロパティを編集/読み取りできるようにする必要がありますが、その方法がわかりません。

List<object> objects = new list<object>();
SomeObject obj;

objects.add(obj);

Int value = objects(0).somevariable;

しかし、コードはオブジェクトがそれを持っていることを認識していないため、明らかに「somevariable」を読み取ることはできません。リスト内のすべてのオブジェクトに変数「somevariable」があるため、これは可能ですか?

また、XNAを使用していますが、おそらく違いはありません。

編集:回答ありがとうございます。明日、コンピューターにアクセスしたときに試してみます。

4

4 に答える 4

4

これらのクラスを変更し、シナリオで意味を成すことができる場合は、共通のインターフェイスを定義できます

public interface IMyInterface
{
     int Somevariable { get; set;}
}

クラスにこのインターフェースを実装させると、このような一般的なリストを作成できます

var objects = new List<IMyInterface>();
int value = objects[0].Somevariable;
于 2013-05-21T20:50:04.447 に答える
2

リフレクションを使用する必要があります。

public static object GetPropertyValue(object obj, string propertyName)
{
     return obj.GetType().GetProperty(propertyName).GetValue(obj, null);
}

(もちろん、可能であればインターフェイスを使用してください:))

于 2013-05-21T20:49:43.883 に答える
2

すべてのオブジェクトに対してアクセスするメソッドとプロパティを含むインターフェイスを定義し、それらのオブジェクトのクラスにこのインターフェイスを実装させ、リストを List として宣言します。またはリフレクションを使用しますが、それは通常は行う方法ではありません。

于 2013-05-21T20:50:03.310 に答える