根据部分属性来判断俩个对象是否相同

代码是第一版本 可能不牢固 有问题请反馈一下 3QU

效果图:

     public static class CustomExpand
{
public static bool CustomEquals<T>(this T t, T t1, params Expression<Func<T, object>>[] ex) where T : class
{
List<string> memberList = new List<string>();
foreach (var item in ex)
{
string memberName = (GetMemberExpression(item.Body)?.Member.Name);
if (!string.IsNullOrEmpty(memberName))
{
memberList.Add(memberName);
}
}
Type type = t.GetType();
while (memberList.Count > )
{
PropertyInfo propertyInfo = type.GetProperty(memberList[]);
switch (propertyInfo.PropertyType.BaseType.FullName)
{
case "System.ValueType":
if (propertyInfo.GetValue(t, null)?.ToString() != propertyInfo.GetValue(t1, null)?.ToString())
{
return false;
}
break;
case "System.Object":
if (SerializerHelper.ToJson(propertyInfo.GetValue(t, null)) != SerializerHelper.ToJson(propertyInfo.GetValue(t1, null)))
{
return false;
}
break;
default:
throw new Exception($"类型:{propertyInfo.PropertyType.BaseType.FullName} 未作处理");
break;
}
memberList.RemoveAt();
}
return true;
}
public static MemberExpression GetMemberExpression(Expression expression)
{
if (expression is MemberExpression)
{
return expression as MemberExpression;
}
if (expression is UnaryExpression)
{
return GetMemberExpression(((UnaryExpression)expression).Operand);
}
return null;
}
}

C# 根据部分属性来判断俩个对象是否相同的更多相关文章

  1. 如何通过源生js获取一个元素的具体样式值 /* getCss:获取指定元素的具体样式的属性值 curElement:[dom对象] attr:[string] */

    昨天的博客些的真的是惨不忍睹啊!!!但是我的人生宗旨就是将不要脸的精神进行到底,所以,今天我又来了.哈哈哈哈哈! 方法一:元素.style.属性名:(这个有局限性--只能获取行内样式的值,对于样式表或 ...

  2. Document-对象属性和常用的对象方法

    Document-对象属性和常用的对象方法 对象属性 document.title                           //设置文档标题等价于HTML的title标签 document ...

  3. #8.10.16总结# 属性选择符 伪对象选择符 CSS的常用样式

    属性选择符 E[att] E[att="val"] E[att~="val"] E[att^="val"] E[att$="val ...

  4. Spring IOC 容器源码分析 - 填充属性到 bean 原始对象

    1. 简介 本篇文章,我们来一起了解一下 Spring 是如何将配置文件中的属性值填充到 bean 对象中的.我在前面几篇文章中介绍过 Spring 创建 bean 的流程,即 Spring 先通过反 ...

  5. JSP中scope属性 scope属性决定了JavaBean对象存在的范围

    scope属性决定了JavaBean对象存在的范围. scope的可选值包括: ---page(默认值) ---request ---session ---application   1.page范围 ...

  6. constructor 属性返回变量或对象的构造函数。判断是否为日期,数组的例子

    constructor 属性返回变量或对象的构造函数. <!DOCTYPE html> <html> <head> <meta charset="u ...

  7. C# 中利用反射机制拷贝类的字段和属性(拷贝一个类对象的所有东西付给另一个类对象,而不是付给引用地址)

    from:https://blog.csdn.net/poxiaohai2011/article/details/27555951 //C# 中利用反射机制拷贝类的字段和属性(拷贝一个类对象的所有东西 ...

  8. 为什么实例没有prototype属性?什么时候对象会有prototype属性呢?

    为什么实例没有prototype属性?什么时候对象会有prototype属性呢? javascript loudou 1月12日提问 关注 9 关注 收藏 6 收藏,554 浏览 问题对人有帮助,内容 ...

  9. iOS Category 添加属性实现原理 - 关联对象

    iOS Category 添加属性实现原理 - 关联对象 RunTime为Category动态关联对象 使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系.对象一开始初始化的时候其属性 ...

随机推荐

  1. Cookie的HttpOnly、secure、domain属性

    Cookie主要属性 Cookie主要属性: path domain max-age expires:是expires的补充,现阶段有兼容性问题:IE低版本不支持,所以一般不单独使用 secure h ...

  2. solr搜索引擎配置使用mongodb作为数据源

    环境说明: 操作系统:由于是使用的docker直接拉取的镜像部署的,系统是LINUX环境 mongodb: 4.0.3 solr: 7.5.0 python: 3.5 配置mongodb 1.拉取mo ...

  3. Excel快捷键大全 Excel2013/2010/2007/2003常用快捷键大全

    一个软件最大的用处是提高工作效率,衡量一个软件的好坏,除了是否出名之外,最主就是能否让一个新手更快的学会这个软件和提高工作速度.就拿Excel表格来说吧,平常办公中我们经常会用它来制作表格,统计数据或 ...

  4. linux系统运行状态检查

    目录 1 CPU状态检查 1.1 运行时间 1.2 CPU占用率 1.3 单核占用率 2 内存状态检查 2.1 内存占用率 2.2 交换分区占用率 3 磁盘状态检查 3.1 系统磁盘容量占用率 3.2 ...

  5. Xmind破解

    原始教程 http://df1551e3.wiz03.com/share/s/3v5l7z2wdQVs2llAUc0C_-n_2cPZVe0kEA2n2iw1Ay1ApF_o

  6. 服务器出现大量的127.0.0.1:3306 TIME_WAIT连接 解决方法 [转载]

    netstat -an 192.168.12.13:3306      192.168.12.12:30443      TIME_WAIT 192.168.12.13:3306      192.1 ...

  7. python五十八课——正则表达式(替换)

    替换:sub(regex,repl,string,count,[flags=0]): 替换数据,返回字符串(已经被替换完成后的内容)subn(regex,repl,string,count,[flag ...

  8. 什么是CPU密集型、IO密集型?

    CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘.内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/ ...

  9. Codeforces Round #524 (Div. 2) C. Masha and two friends 几何:判断矩形是否相交以及相交矩形坐标

    题意 :给出一个初始的黑白相间的棋盘  有两个人  第一个人先用白色染一块矩形区域 第二个人再用黑色染一块矩形区域 问最后黑白格子各有多少个 思路:这题的关键在于求相交的矩形区间 给出一个矩形的左下和 ...

  10. jQuery-iframe加载完成后触发的事件监听

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 最近遇到一个问题,要写一个后台管理系统的layout,里面content是一个ifra ...