-
-
Notifications
You must be signed in to change notification settings - Fork 232
EqualityChecking
Equality check will be done before setting the field and firing the event.
public string Property1
{
get
{
return property1;
}
set
{
if (String.Equals(property1, value))
return;
property1 = value;
OnPropertyChanged("Property1");
}
}The method used for equality checking is based on the property Type. The evaluation is done in the following order.
- Check if the Type is a
Nullable<T>and useNullable.Equals<T>(T?,T?). - Check if the Type has a static
Equalsmethod with two parameters matching Type. - Check if the Type has and Equality Operator (==) with both parameters matching Type.
- Use
Object.Equals(object, object).
If you don't want to perform equality checking for a give property then add a [DoNotCheckEquality].
Equality checking will be done at the entry point of the setter and not only bypass the setting of the backing field and the call to OnPropertyChanged, but also any custom code in the setter, including code injected by other weavers like PropertyChanging.Fody.
If you need to run custom code in the setter despite the outcome of the equality check, you can either disable the equality check, or mark the property with [DoNotNotify] and implement the setter by your own.