【发布时间】:2014-06-27 19:46:17
【问题描述】:
我是 C# 语言的初学者
我有这样的课
public class Plan
{
int a;
int b;
int c;
}
我可以以任何方式获得该类的第 n 个属性。
例如:planObject.propertyIndex
这对我的项目有很大帮助,因为我得到的索引号表示要更改其值的属性。我现在正在做的是使用 if...else 。
if(index ==1)
{
planObject.a = 100;
}
else if(index ==2)
{
planObject.b = 100;
}
有没有其他方法可以通过反射解决这个问题?
【问题讨论】:
-
使用单个
List<int>、int[]或Dictionary<int, int>。 -
@TimSchmelter 实际上我的工作是代码维护的一部分,这就是代码的设计方式,我无法更改使用的数据结构
-
这看起来是一个完全可以避免的问题。你最终想要达到什么目的?编辑:哎呀,那没关系。
-
你应该使用反射:
var props = typeof(Plan).GetProperties().ToArray()[n]; -
@Robert_Junior,只是为了说清楚。属性不是单独排序的,因此 nth property 在这里不是一个明确定义的术语。您需要以某种方式在这里定义顺序。