两个对象值的基于反射的比较
本文关键字:反射的 比较 对象 两个 | 更新日期: 2023-09-27 18:00:32
.net是否有任何库/框架可以接受两个相同类型的对象,并使用所有属性的反射匹配值?
我不得不比较两个具有2个NullableDateTime属性的对象,并且代码看起来非常难看:
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;
}
据我所知,没有可用的库,但在用于比较相同类型对象的.NEt框架中,我们有IComparare接口,您可以使用该接口在两个相同类型的对象之间进行比较。
public class BoxComp : IComparer<Box>
{
// Compares by Height, Length, and Width.
public int Compare(Box x, Box y)
{
///you code to do comparison
}
}
你也可以使它通用。
你可以检查一下:比较.NET对象,但我建议进行比较,因为没有太大的需要,因为你只想比较两个对象的日期时间。