【发布时间】:2015-07-01 14:16:39
【问题描述】:
是否有任何适用于 .net 的库/框架可以采用两个相同类型的对象并使用所有属性的反射匹配值?
我不得不比较两个具有 2 个 Nullable DateTime 属性的对象,并且代码看起来很难看:
private bool SameValues(ExpiryDates ExpiryDates1, ExpiryDates ExpiryDates2)
{
//Assume they are the same value and then look for differences
bool result = true;
if (ExpiryDates1.PSL_ExpiryDate.HasValue != ExpiryDates2.PSL_ExpiryDate.HasValue)
{
result = false;
}
if (ExpiryDates1.MNL_ExpiryDate.HasValue != ExpiryDates2.MNL_ExpiryDate.HasValue)
{
result = false;
}
if ((ExpiryDates1.MNL_ExpiryDate != null) && (ExpiryDates2.MNL_ExpiryDate != null))
if (ExpiryDates1.MNL_ExpiryDate.Value != ExpiryDates2.MNL_ExpiryDate.Value)
result = false;
if ((ExpiryDates1.PSL_ExpiryDate != null) && (ExpiryDates2.PSL_ExpiryDate != null))
if (ExpiryDates1.PSL_ExpiryDate.Value != ExpiryDates2.PSL_ExpiryDate.Value)
result = false;
return result;
}
【问题讨论】:
-
@Adriano Repetti :确实非常好的答案,从未想过为此目的使用序列化,太棒了!
-
谢谢,但也可以在其他答案中查看我的评论。这很容易但很慢,二进制与逻辑等价可能很棘手。 1.0 == 1.0f? NaN == NaN?转换运算符和自定义比较呢?您可以使用它,但在非常具体和有限的场景中。否则手动(该答案中的第二种方法)或使用库(Pranab 的答案)
标签: c#