2016-05-17 116 views
1

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

回答

2

这个问题似乎是要传递到GetValue参数 - 它需要myObj,不this

此外,你需要转换调用的结果DateTime?上分配:

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

应该可以处理日期时间和日期?一起。您可以随时将值类型T取消为'可为空值'。 –

+0

@mikez编辑,谢谢!将一个不可空对象拆分为一个完全可空的对象。我几乎可以肯定,我在很久以前尝试过这种方式,当可空类型出来时,它并不起作用。但也许我做错了。 – dasblinkenlight

相关问题