I have ViewModel base class defined as follows:
public abstract class AbstractViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void SendPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
In derived classes i do as follows:
SomeType someProperty;
public SomeType SomeProperty
{
get { return someProperty; }
set
{
if (someProperty != value)
{
someProperty = value;
SendPropertyChanged("SomeProperty");
}
}
}
I thought, why repeat this logic for every setter, I can define this in method specified in AbstractViewModel! I came up with something like this:
protected void SetPropertyValue(ref object oldValue, ref object newValue, MethodBase method)
{
if (!oldValue.Equals(newValue))
{
oldValue = newValue;
SendPropertyChanged(method.Name);
}
}
In the setter of property:
SetPropertyValue(ref someProperty, ref value, MethodBase.GetCurrentMethod());
But I get error:
The best overloaded method match for 'ViewModel.AbstractViewModel.SetPropertyValue(ref object, ref object, System.Reflection.MethodBase)' has some invalid arguments
What I'm doing wrong here?
Aucun commentaire:
Enregistrer un commentaire