我有一个大模型
public class SomeModel
{
public int Id { get; set; }
.....A lot(24) of Fields here.....
}
现在在Post ActionResult Edit(somemodel SomeModel)
我想检查用户是否已根据数据库中的原始模型值更改了任何内容。使用If Else
会产生很多混乱的代码。无论如何都要检查用户是否更改了某些内容,以及可能的用户更改了哪个字段?
答案 0 :(得分:3)
我正在考虑使用像这样的方法
public class SomeModel
{
//...
public override bool Equals(object obj)
{
var type = this.GetType();
bool SameObj = true;
//for each public property from 'SomeModel'
//[EDITED]type.GetProperties().Each(prop=>{ // Sorry i'm using custom extension methode here
//you should probably use this instead
type.GetProperties().ToList().ForEach(prop=>{
//dynamically checks that they're equals
if(!prop.GetValue(this,null).Equals(prop.GetValue(obj,null))){
SameObj=false;
}
}
return SameObj;
}
}
/!\已编辑