【发布时间】:2021-02-11 15:20:37
【问题描述】:
我有这个代码:
messageDto = new CorrelationDto()
{
timestamp = default,
};
var isDefault = messageDto.GetType().GetProperty("timestamp").GetValue(messageDto) == default; // FALSE
var isDefault2 = messageDto.timestamp == default; // TRUE
其中时间戳是一个日期时间。
如您所见,通过反射获取值并与默认值进行比较返回 false。您知道为什么会发生这种情况以及我应该如何检查默认值吗? 谢谢
== 编辑 ==
有人指出 GetValue() 的返回值是一个对象,因此必须将其强制转换为 DateTime 才能使默认值起作用。不幸的是,我不能,因为我正在对对象的所有属性运行此测试以发现该对象是否已初始化(因此我检查 null 或默认值)。而messageDto实际上是一个泛型类型,所以我不知道它的属性类型是先验的。
【问题讨论】:
-
您的原始问题已得到解答。您的修改构成了一个不同的问题。
-
您能找到适合您的编辑部分的解决方案吗?
标签: c#