两个对象值的基于反射的比较

本文关键字:反射的 比较 对象 两个 | 更新日期: 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对象,但我建议进行比较,因为没有太大的需要,因为你只想比较两个对象的日期时间。