【发布时间】:2013-02-07 13:02:42
【问题描述】:
我正在尝试为外部程序在我的班级中获取/设置变量创建一种简单的方法。我所拥有的是一个具有多个变量的类,例如:
class myClass
{
public int one
{
get{ /* get code here */ }
set{ /* set code here */ }
}
}
而不仅仅是变量“一个”,我有接近 100 个变量。所有设置都使用相同的方式获取和设置代码。我想要的是一种获取和设置变量的简单方法。示例:不必这样做:
myClass c = new myClass();
c.one = 5;
我想找到一种方法来做类似的事情:
myClass c = new myClass();
c.setVariable("variableName", value);
最好让“variableName”文本来自枚举列表,这样它们就可以像这样被引用:
c.setVariable(enumName.varName, value);
我不确定该怎么做,或者是否有可能。正如我所说,我有近 100 个变量需要自己的 get/set 代码,但出于各种原因,我更喜欢只有一个公共 get 函数和一个公共 set 函数。
由于我认为反射效率不高,因此我想尽可能避免它。
我在 C# 中看到过其他类似这样的代码:
this["variableName"] = value;
但是我似乎也无法找到一种方法来完成这项工作......
【问题讨论】:
-
在这种情况下你无法避免反思。
-
正如 Fuex 所说,在这种情况下反射是必须的!
-
改用
Dictionary。 -
在什么方面 c.SetVariable(myClassEnum.one, 5) 比 c.one = 5 更好? - 我不明白。
-
让你的类成为 IDictionary
的实现,你可以做你想做的事。它不会给你属性,但也许这不是你需要的
标签: c#