When I run the Convert to Property with Change Notification template on this code:
C#public int VendorId { get; set; }
in a class that has this SetProperty method
C#protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
{
if (Equals(storage, value))
return false;
storage = value;
this.RaisePropertyChanged(propertyName);
return true;
}
I need something like this
C#int vendorId
public int VendorId
{
get { return vendorId; }
set { SetProperty(ref vendorId, value); }
}
I get this instead
C#int vendorId;
public int VendorId
{
get
{
return vendorId;
}
set
{
if (vendorId == value)
{
return;
}
vendorId = value;
SetProperty(ref default(T), default(T));
}
}
Is there a way for the template expansion to create the code I need?
Darin,
I have reproduced this issue with the following code:
using System.ComponentModel; using System.Runtime.CompilerServices; namespace TestNamespace { public class TestClass : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void RaisePropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null) { if (Equals(storage, value)) return false; storage = value; this.RaisePropertyChanged(propertyName); return true; } public int VendorId { get; set; } } }
After applying "Convert to Property with Change Notification", I get code that doesn't compile. Please give us some time to fix this problem. I will inform you of our results.