当传入空值时,. equals()的替代方法
本文关键字:方法 equals 空值 | 更新日期: 2023-09-27 18:13:15
所以我有这个方法,它检查属性是否已经改变,但是当一个空值被传递进去时,它会因为对象引用没有设置为实例错误而失败。equals方法。
public bool HasPropertyChanged(string property, object newValue) {
bool result = false;
PropertyInfo propertyInfo = Entity.GetType().GetProperty(property);
if (!newValue.Equals(propertyInfo.GetValue(Entity, null))) {
result = true;
}
return result;
}
这是我提出的解决方案的问题,但我希望做一些更干净的我使用ReferenceEquals(),但它总是返回false当一个值传递进来。任何提示/建议都会很好。
public bool HasPropertyChanged(string property, object newValue) {
bool result = false;
PropertyInfo propertyInfo = Entity.GetType().GetProperty(property);
object oldValue = propertyInfo.GetValue(Entity, null);
if (newValue != null) {
//check to prevent Object Reference not equal to null
if (!newValue.Equals(oldValue)) {
result = true;
}
}
else if (oldValue != null) {
// If oldValue is not null then return the property has changed
result = true;
}
return result;
}
使用对象。等于处理null
对象的静态方法。
public bool HasPropertyChanged(string property, object newValue)
{
PropertyInfo propertyInfo = Entity.GetType().GetProperty(property);
return !object.Equals(newValue,propertyInfo.GetValue(Entity, null));
}
如果使用实体框架,它看起来好像你可能是....试试下面的内容:
if (Entity.State == EntityState.Modified)
{
}