public static bool PropertiesEqual<T>(T self, T to, params string[] skip)
where T : class
{
if (self != null && to != null)
{
var selfType = self.GetType();
var skipList = new List<string>(skip);
foreach (PropertyInfo pi in selfType.GetProperties(BindingFlags.Public |
BindingFlags.Instance))
{
if (skipList.Contains(pi.Name)) continue;
var selfValue = selfType.GetProperty(pi.Name).GetValue(self, null);
var toValue = selfType.GetProperty(pi.Name).GetValue(to, null);
if (selfValue != toValue && (selfValue == null ||
!selfValue.Equals(toValue)))
{
return false;
}
}
return true;
}
return self == to;
}
我想使用扩展方法扩展我的 EF 实体,该方法比较两个实例的原始(?)属性(属性,如数字、字符串、布尔值和未附加的对象)。
我想知道的是,是否可以将其作为扩展方法?还是我需要在 POCO 类中为我想要做的每种 EF 类型定义它instance1.PropertiesEqual(instance2)
?
我想知道的第二件事是如何正确定位我上面提到的数据类型,并跳过附加对象(连接表)。