如何使用反射来获取/设置属性的值?

时间:2016-05-17 18:15:00

标签: c#

我正在尝试使用反射来遍历给定类中的所有属性,并对它找到的所有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 
    }
}

1 个答案:

答案 0 :(得分:2)

问题似乎是您传递给GetValue的参数 - 它必须是myObj,而不是this

此外,您需要在分配时将调用结果转换为DateTime?

DateTime? test = (DateTime?)prop.GetValue(this);