我一直想知道 - 在 C# 中是否有一种方法可以为一个类中的多个属性定义一个"template"。这就是我的意思:
假设我有以下类(class)
class MyCLass
{
public int IntVal1 { get {...}; set{...} }
public byte IntVal2 { get {...}; set{...} }
....
public long IntValN { get {...}; set{...} }
}
我没有在 get 和 set 访问器中编写任何特定的实现,但我的想法是所有这些属性都有非常相似的实现——不同之处可能在于它们对具有不同类型的类的不同成员进行操作,但作为整体而言,它们看起来都很相似。
我的想法是找到一种方法来定义某种(让我们称之为)带有一些参数的"template",这些参数可能用于声明所有这些属性,而无需编写每个属性的实际实现他们 - 也许使用属性!?!
我想我需要的是类似于 C 宏的东西。
最佳答案
简短的回答是“否”,但您可以采取一些措施来减少重复。例如,考虑:
private bool SetField<T>(ref T field, T value,
[CallerMemberName] string memberName = null)
{
if (!EqualityComparer<T>.Default.Equals(field, value))
{
field = value;
var handler = PropertyChanged;
if (handler != null) handler(this,
new PropertyChangedEventArgs(memberName));
return true;
}
return false;
}
可用于通过以下方式减少开销:
private string bar;
public string Bar
{
get { return bar; }
set { SetField(ref bar, value); }
}
关于c# - 在 C# 中使用 "template"在类中实现类似的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15291111/