WPF C#泛型
我对泛型非常陌生。我正在尝试为具有私有设置者的实体创建编辑器,例如:
public class EditorBase<T> where T: class, new()
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class AccountEditor<T> : EditorBase<T> where T : class, new()
{
public AccountEditor()
{
bR = new BillingRepository();
pt = new ViewPatient();
}
public viewName Name { get; private set; }
public ViewPatient pt { get; private set; }
public virtual async void SetAccountAsync(viewName _name)
{
Name = _name;
if (_name == null)
pt = new ViewPatient();
else
{
pt = await bR.GetPersonByNameAsync(_name.lastName, _name.firstName, DateTime.Parse(_name.birthDate));
RaisePropertyChanged();
}
}
private readonly BillingRepository bR;
private string _mi;
public string mi
{
get { return pt.mi; }
set { if (pt.mi == value) return; pt.SetMi(value); RaisePropertyChanged(); }
}
而不是实施INotifyPropertyChanged的实体,我正在使用 绑定编辑器。我的问题是将接口添加到的语法 编辑器类。
如何将INotifyPropertyChanged接口添加到类EditorBase声明中?
此语法失败: EditorBase,其中T:class,new():INotifyPropertyChanged
在此先感谢您的帮助。
答案 0 :(得分:2)
此语法失败:EditorBase,其中T:class,new():INotifyPropertyChanged
正确的语法是EditorBase<T> : INotifyPropertyChanged where T:class, new()
由于实体具有私有设置器,因此它们无法自行实现INotifyPropertyChanged
老实说,我不知道你的意思。任何类都可以声明是否实现任何接口,而不管其属性设置器使用什么可见性。