我已经有代码工作,迭代类属性 问题是我希望我的类属性能够即时确定。我希望实现类似的东西
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中存在的值,每次操作一个特定的属性并获取它们的数据。
答案 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
属性,因此您可以循环遍历它们,检查它们的类型等。