【发布时间】:2011-11-03 06:55:31
【问题描述】:
我想将对象的所有 DateTime 属性设置为默认日期。但是,如果我尝试通过反射设置值,则会出现异常:“对象与目标类型不匹配。”
private void SetDefaultValues()
{
DateTime dt = DateTime.Parse("1/1/2000", new CultureInfo("en-US", true));
foreach (PropertyInfo p in this.GetType().GetProperties())
{
if (p.PropertyType.FullName == "System.DateTime")
{
p.SetValue(dt, typeof(DateTime), null);
}
}
}
我在做/想什么根本不正确的事情吗?
【问题讨论】:
-
通过反射而不是直接设置这些的原因是什么?如果您有很多需要设置的内容,可以考虑将它们放入列表或字典中。
-
有什么理由避免使用 getter 返回具有默认日期的类 var 的标准属性?
-
我尝试在多级继承噩梦中实现类似的功能,实现基于反射的自定义反序列化方法。表演太可怕了!您最好使用部分类并编写代码生成器。 (我的 0.02 美元)。
-
我需要将所有 DateTime 属性设置为“标准”日期,因为它们所属的对象是 EF Code First 对象,这意味着:如果它们,我无法将 DateTime 属性保存到 SQL CE DB有一个 DateTime.MinValue (希望你明白我的意思......)
标签: c# .net reflection c#-4.0 system.reflection