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

时间:2015-07-01 06:13:53

标签: c#

是否有任何.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;
}

1 个答案:

答案 0 :(得分:1)

根据我的知识,没有可用的库,但在.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
    }
}

你可以把它变成通用的。

你可以检查一下:Compare .NET Objects但我建议你去比较拼版,因为你不需要比较两个对象的日期时间。