zoukankan      html  css  js  c++  java
  • 判断两个相同引用类型的对象的属性值是否相等


    /// <summary>
    /// 判断两个相同引用类型的对象的属性值是否相等
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="obj1">对象1</param>
    /// <param name="obj2">对象2</param>
    /// <param name="type">按type类型中的属性进行比较</param>
    /// <returns></returns>

    public static bool CompareProperties<T>(T obj1, T obj2, Type type)
    {
    //为空判断
    if (obj1 == null && obj2 == null)
    return true;
    else if (obj1 == null || obj2 == null)
    return false;

    Type t = type;
    PropertyInfo[] props = t.GetProperties();
    foreach (var po in props)
    {
    if (IsCanCompare(po.PropertyType))
    {
    if (!po.GetValue(obj1).Equals(po.GetValue(obj2)))
    {
    return false;
    }
    }
    else
    {
    return CompareProperties(po.GetValue(obj1), po.GetValue(obj2), po.PropertyType);
    }
    }

    return true;
    }

    /// <summary>
    /// 该类型是否可直接进行值的比较
    /// </summary>
    /// <param name="t"></param>
    /// <returns></returns>
    private static bool IsCanCompare(Type t)
    {
    if (t.IsValueType)
    {
    return true;
    }
    else
    {
    //String是特殊的引用类型,它可以直接进行值的比较
    if (t.FullName == typeof(String).FullName)
    {
    return true;
    }
    return false;
    }
    }

    萌橙 你瞅啥?
  • 相关阅读:
    geoserver发布mysql表数据
    geoserver1
    geoserver
    快速搭建arcgis以及cesium环境
    openlayers和cesium实现地图二三维切换
    记Mysql类型引起的BUG
    OpenLayers 图层(Layers) 详解
    基于TrueLicense实现产品License验证功能
    第七章
    第六周进度报告
  • 原文地址:https://www.cnblogs.com/daimaxuejia/p/10619047.html
Copyright © 2011-2022 走看看