【发布时间】:2015-01-24 20:25:16
【问题描述】:
目前,我正在使用反射,想知道是否有其他方法可以实现相同的效果。
foreach (var propertyInfo in MyObject.GetType().GetProperties())
{
if (propertyInfo.CanRead)
{
if (propertyInfo.Name.Equals(fieldName))
{
propertyInfo.SetValue(MyObject, "Some value", null);
break;
}
}
}
【问题讨论】:
-
好吧,我们需要知道你为什么这样做。不知何故,我觉得这可以通过接口或抽象类和多态来解决。
-
我建议将接口与您需要的字段应用到您需要为其运行 foreach 循环的任何对象类型。反射是可怕的。
-
添加休息;在 SetValue 之后
-
您可以在您的类中使用
string参数实现Indexer(大多数示例仅适用于int)。如果您只有 一种 类型的返回值(或“设置”值),效果最好。否则你可能需要object。 -- 然后在索引器中,使用string来了解您的意思(通过switch或类似的)。但这都是非常手动的。 -
你知道有一个GetProperty 方法(加上一些重载)接受一个属性名称参数吗?
标签: c# .net silverlight reflection properties