按索引访问对象的属性

时间:2014-02-17 16:03:34

标签: c#

myObject.property1 = value1;
myObject.property2 = value2;

我想通过索引访问属性,例如:

"myObject.property[0]" = value1;
"myObject.property[1]" = value2;

是否可以枚举属性或执行其他操作?

2 个答案:

答案 0 :(得分:0)

您可以通过reflection枚举类成员,但这不是您希望在正常情况下用于获取或设置已知类型的值的内容。它不具备性能,编写起来很复杂,不一定是运行时安全的,而且是阅读的噩梦。

答案 1 :(得分:0)

如果你在课堂上公开一个列表,你可以这样做:

class MyClass {
    public List<object> property { get; private set; }
    public MyClass() {
        property = new List<object>(100);
    }
}

...

var myObj = new MyClass();
myObj.property[0] = 1;
myObj.property[1] = "hello";

但这不是一个好主意。使用名称公开不同类型的参数通常要好得多,因为编译器可以帮助您避免错误,并且代码将更容易维护。