如何在 C# 中同时引用多种类型
how can ref multi type same time in c#
我创建了一个大师class被继承
在 classes 的其余部分
新增更新提醒方式,同时设置值
对于 属性 变量
问题是我必须为每种类型添加一个方法
有没有办法发送变量?
不关心通过 ref
的类型
public class mainclass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChange(ref int prop, int value, [CallerMemberName] String propertyName = "")
{
if (prop!=value)
{
prop = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public void NotifyPropertyChange(ref string prop, string value, [CallerMemberName] String propertyName = "")
{
if (prop != value)
{
prop = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public class testclass: mainclass
{
private int myVar;
public int MyProperty
{
get { return myVar; }
set => NotifyPropertyChange(ref myVar, value);
}
}
只做一个泛型方法:
private void Set<T>(ref T field, T value, [CallerMemberName] string caller = "")
{
if (!EqualityComparer<T>.Default.Equals(field, value))
{
field = value;
OnPropertyChanged(caller);
}
}
请注意,继承这样的基础可能会出现问题 class,因为 .net 只允许单一继承。我通常只是将这样的方法复制到需要它的ViewModels。
我创建了一个大师class被继承 在 classes 的其余部分 新增更新提醒方式,同时设置值 对于 属性 变量 问题是我必须为每种类型添加一个方法 有没有办法发送变量? 不关心通过 ref
的类型 public class mainclass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChange(ref int prop, int value, [CallerMemberName] String propertyName = "")
{
if (prop!=value)
{
prop = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public void NotifyPropertyChange(ref string prop, string value, [CallerMemberName] String propertyName = "")
{
if (prop != value)
{
prop = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public class testclass: mainclass
{
private int myVar;
public int MyProperty
{
get { return myVar; }
set => NotifyPropertyChange(ref myVar, value);
}
}
只做一个泛型方法:
private void Set<T>(ref T field, T value, [CallerMemberName] string caller = "")
{
if (!EqualityComparer<T>.Default.Equals(field, value))
{
field = value;
OnPropertyChanged(caller);
}
}
请注意,继承这样的基础可能会出现问题 class,因为 .net 只允许单一继承。我通常只是将这样的方法复制到需要它的ViewModels。