迭代包含类定义的字典值

时间:2017-04-29 19:46:56

标签: c# dictionary

我已经有代码工作,迭代类属性 问题是我希望我的类属性能够即时确定。我希望实现类似的东西

MyClass
{
   public double value1{ set; get; }
   public double value2{ set; get; }
   public double value3{ set; get; }
    .....
}
 Dictionary<int, MyClass> myDict;
  /*this could be changed idk*/
PropertyInfo variableproperty= myClassesProperties;
foreach (PropertyInfo myClassesProperties in myDict.ElementAt(0).Value.GetType().GetProperties())
{
    for (int i = 0; i < myDict.Count(); i++)
    {
        myDict.ElementAt(i).Value.variableproperty=.......
    }
}

如何编写代码来生成类似的东西

更新 最后,我想循环遍历MyClass中存在的值,每次操作一个特定的属性并获取它们的数据。

1 个答案:

答案 0 :(得分:1)

我假设您要在强类型对象上设置属性的值,即您在编译时定义了属性,而不是使用像ExpandoObject这样的动态对象,并且名称为目标属性在运行时会有所不同。

如果是这种情况,并且您已正确获取相关媒体资源的PropertyInfo个实例,请使用PropertyInfo.SetValue(myObjectInstance, myNewValue)

您可以使用Type.GetProperty()获取班级中任何指定媒体资源的PropertyInfo个对象:

PropertyInfo myProp = typeof(MyClass).GetProperty("MyPropertyName");

这样你可以检查它是否可写:

if (myProp.CanWrite) { // do stuff... }

如果你想获得你班上每个属性的整套PropertyInfo对象:

var myProperties = typeof(MyClass).GetProperties();

其中每个都有Name属性,因此您可以循环遍历它们,检查它们的类型等。