从未知对象访问属性/变量

本文关键字:变量 属性 访问 未知 对象 | 更新日期: 2023-09-27 18:14:37

我有一个'object'列表,其中有不同类型的对象。我需要能够编辑/读取所有对象的属性,但我不知道如何做到这一点。

List<object> objects = new list<object>();
SomeObject obj;
objects.add(obj);
Int value = objects(0).somevariable;

但是它显然不能读取'somevariable',因为代码不知道对象有它。这样做是可能的,因为列表中的所有对象都有变量"somevariable"?

另外,我使用XNA,但这可能没有任何区别。

编辑:谢谢大家的回答,我明天打开电脑的时候会试试的。

从未知对象访问属性/变量

如果您可以修改这些类并使其在您的场景中有意义,您可以定义一个公共接口

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

并让你的类实现这个接口,那么你将能够创建一个像这样的泛型列表

var objects = new List<IMyInterface>();
int value = objects[0].Somevariable;

定义一个接口,其中包含您想要访问的所有对象的方法和属性,让这些对象的类实现该接口并将列表声明为list。或者使用反射,但这通常不是正确的方法。

你必须使用反射

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

(当然如果可能的话使用接口:))

让其中包含"somevariable"的基类和baseclass列表,所以list[0]。有些变量是可能的。

class MyBaseClass
{
    public int SomeVariable{get;set;}
}
class MyDerivedClass : MyBaseClass
{
.............
}
List<MyBaseClass> l=new List<MyBaseClass>();
l[0].SomeVariable=111;