C#将函数附加到属性设置器的最短路径(最少文本量)是什么?

时间:2016-06-02 07:50:08

标签: c# properties

我有一个类,每次更改属性时都需要调用刷新函数。所以我发现自己写了很多这些:

private double _x;
public double X
    {
        get { return _x; }
        set
        {
            _x = value;
            refresh();
        }
    }

每个属性的刷新功能始终相同。 有没有更短的方法来做到这一点?

此外,我始终通过private double _x访问double X,因此如果我可以以某种方式集成public double X { get; set}方法,refresh()之类的内容可以正常工作。

2 个答案:

答案 0 :(得分:2)

纯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); } }

答案 1 :(得分:1)

the nuget package https://github.com/Fody/PropertyChanged

您可以轻松地为fody创建一个类似的包,它将调用您的刷新功能。