我正在尝试使用反射来遍历给定类中的所有属性,并对它找到的所有DateTime属性执行转换。
但是我收到错误{“对象与目标类型不匹配。”}
如何获取给定属性的值并设置其值?
我的代码:
var properties = myObj.GetType().GetProperties();
foreach (var prop in properties) {
if (prop.PropertyType == typeof(DateTime) || prop.PropertyType == typeof(DateTime?)) {
DateTime? test = prop.GetValue(this);
// Do conversion on test
// Do something like prop.SetValue(??) with the new value
}
}
答案 0 :(得分:2)
问题似乎是您传递给GetValue
的参数 - 它必须是myObj
,而不是this
。
此外,您需要在分配时将调用结果转换为DateTime?
:
DateTime? test = (DateTime?)prop.GetValue(this);