首页 > 其他分享 >通过反射对比两个Model值的差异

通过反射对比两个Model值的差异

时间:2023-10-24 14:37:20浏览次数:35  
标签:反射 Head vc Name GetValue hc Model 对比 row

//Head
var head = row.Head.GetType().GetProperties();
var headModel = model.Head.GetType().GetProperties();
foreach (var h in head)
{
if (h.Name != "ChangedBy" & h.Name != "UpdateDate" & h.Name != "UpDate" & h.Name != "UpdateUser")
{
foreach (var hc in headModel)
{
if (h.Name == hc.Name)
{
if (h.PropertyType == typeof(bool))
{
bool v = (bool)h.GetValue(row.Head);
bool vc = (bool)hc.GetValue(model.Head);
if (v != vc)
{
rows.Add(string.Format("Head {0}:{1}-{2}", h.Name, v, vc));
}
}
else if (h.PropertyType == typeof(DateTime))
{
var v = (DateTime)h.GetValue(row.Head);
var vc = (DateTime)hc.GetValue(model.Head);
if (v != vc)
{
rows.Add(string.Format("Head {0}:{1}-{2}", h.Name, v, vc));
}
}
else if (h.PropertyType == typeof(decimal))
{
decimal v = (decimal)h.GetValue(row.Head);
decimal vc = (decimal)hc.GetValue(model.Head);
if (v != vc)
{
rows.Add(string.Format("Head {0}:{1}-{2}", h.Name, v, vc));
}
}
else if (h.PropertyType == typeof(int))
{
int v = (int)h.GetValue(row.Head);
int vc = (int)hc.GetValue(model.Head);
if (v != vc)
{
rows.Add(string.Format("Head {0}:{1}-{2}", h.Name, v, vc));
}
}
else
{
string v = h.GetValue(row.Head) != null ? h.GetValue(row.Head).ToString() : "";
string vc = hc.GetValue(model.Head) != null ? hc.GetValue(model.Head).ToString() : "";
if (v != vc)
{
rows.Add(string.Format("Head {0}:{1}-{2}", h.Name, v, vc));
}
}
}
}
}
}

标签:反射,Head,vc,Name,GetValue,hc,Model,对比,row
From: https://www.cnblogs.com/wangtiantian/p/17784709.html

相关文章

  • 浅谈go反射
    基本概念支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。Go语言提供了reflect包来访问程序的反射信息。Refelct解析Refel......
  • json的解析和生成(两种方式对比)(二)
    一:解析JSON文件       解析JSON文件用到两种方法都可以,即两种类库,都可以     用到的类库      JavaScriptSerializer类,内置于.NET中用于解析的生成JSON文件      JSON.NET库,第三方加载包    第一种用:NET自带的JavaScriptSerializer     ......
  • 注解与反射
    注解与反射笔记整理于@bilibili遇见狂神说注解(Annotation)什么是注解可被程序读取的注释注解的格式@Override@Deprecated内置注解//在java.lang.Override中定义,表示重写@Override//在java.lang.Deprecated中定义,表示已过时@Deprecated//镇压警告@SuppressWarn......
  • 使用Java语言 利用OpenCV,对两种图片相似度对比
    下边是代码部分importorg.opencv.core.*;importorg.opencv.imgcodecs.Imgcodecs;importorg.opencv.imgproc.Imgproc;importjava.io.*;importjava.net.URL;importjava.util.ArrayList;importjava.util.List;importorg.opencv.features2d.*;importorg.opencv.core.Mat......
  • armsom:为何选择rk3588开发与Jetson Nano引脚兼容的嵌入式产品之规格对比
    下面是JetsonNano模块(以NVIDIAJetsonNano为代表)与armsom开发的AIM5(RockchipRK3588)的主要技术规格的对比,整理成表格:规格JetsonNano(NVIDIA)ArmSoM-AIM5CPU核数四核ARM®Cortex®-A57MPCore处理器四核ARM®Cortex®-A76+四核ARM®Cortex®-A55GPU核数1......
  • armsom:为何选择rk3588开发与Jetson Nano引脚兼容的嵌入式产品之规格对比
    下面是JetsonNano模块(以NVIDIAJetsonNano为代表)与armsom开发的AIM5(RockchipRK3588)的主要技术规格的对比:规格JetsonNano(NVIDIA)ArmSoM-AIM5CPU核数四核ARM®Cortex®-A57MPCore处理器四核ARM®Cortex®-A76+四核ARM®Cortex®-A55GPU核数128核Maxwell架......
  • Almost Tight Multi-User Security under Adaptive Corruptions from LWE in the Stan
    Abstract.Inthiswork,weconstructthefirstdigitalsignature(SIG)andpublic-keyencryption(PKE)schemeswithalmosttightmulti-usersecurityunderadaptivecorruptionsbasedonthelearning-with-errors(LWE)assumptioninthestandardmodel.OurP......
  • y电容和高压瓷片电容区别对比
    多外观上来看,Y电容和高压瓷片电容非常像,有人甚至这样认为,所谓的Y电容,也就是多了个认证的瓷片电容,事实上真的是这样的吗?Y电容和瓷片电容有区别吗?到底有哪些区别?今天KYET小编就来为大家详细讲解一下。Y电容确实也属于高压瓷片电容:y电容也就是常见的安规电容器的一种,也可以叫做安......
  • vue2 el-input-number 千分位显示的支持(不影响v-model的数值取值)
    <!--增加v-thousands指令--><el-input-numberv-model="row.money"v-thousands:controls="false":min="0":precision="2"style="width:100%"//添加全局指令或局部指令directives:......
  • CentOS 8 Stream vs Anolis8.8 对比(2023.10)
    硬件环境Honor笔记本电脑,16GRAM,512GSSD,本机自带无线网卡,外接USB有线网卡安装Anolis8.8到一个128GKingstonU盘,出现如下现象显卡驱动无法支持笔记本的外接显示器;中文输入法无法自动工作;内核版本为5.10;本机的无线网卡未自动识别重新安装CentOS8Stream......