C#将函数附加到属性设置器的最短方式(最少的文本量)是什么?
我有一个类,它需要在每次属性更改时调用刷新函数。所以我发现自己写了很多这样的东西:C#将函数附加到属性设置器的最短方式(最少的文本量)是什么?,c#,properties,C#,Properties,我有一个类,它需要在每次属性更改时调用刷新函数。所以我发现自己写了很多这样的东西: private double _x; public double X { get { return _x; } set { _x = value; refresh(); } } 每个属性的刷新函数始终相同。 有没有较短的方法可以做到这一点 另外,我总是通过double x访问priva
private double _x;
public double X
{
get { return _x; }
set
{
_x = value;
refresh();
}
}
每个属性的刷新函数始终相同。
有没有较短的方法可以做到这一点
另外,我总是通过double x
访问private double\ux
,因此,如果我能够以某种方式集成refresh()
方法,那么像public double x{get;set}
这样的方法就可以很好地工作。纯粹的C方法是将重复的代码移动到一个方法
在您的情况下,类似这样的情况:
void Set<T>(ref T field, T value)
{
field = value;
refresh();
}
private double _x;
public double X { get { return _x; } set { Set(ref _x, value); } }
这是nuget软件包
您可以轻松地为fody创建一个类似的包来调用刷新功能。您可以使用反射动态添加属性,并为每个字段添加属性,但我怀疑这比为每个属性额外编写一行要短得多。您可以编写自定义[refresher]注释吗?您熟悉代码段吗?它们可以使编写重复代码变得容易得多。