具有自定义{get;的变量的Boilerplate代码组; }

时间:2015-04-04 20:46:30

标签: c# getter-setter boilerplate

我在用户控件中有这样的代码。这个想法就像普通变量一样,但是设置后,它会强制控件重绘。

private int _imageHeight;

public int ImageHeight
{
    get { return _imageHeight; }
    set
    {
        _imageHeight = value;
        Invalidate();
    }
}

我理解{ get; set; }为我提供了我刚刚编写的所有代码,但Invalidate()部分除外。有没有什么方法我不必写变量declare和getter / setter代码但仍然得到Invalidate()部分?

1 个答案:

答案 0 :(得分:2)

您正在寻找的概念称为面向方面编程。 使用面向方面编程,您可以摆脱Boilerplate并声明在调用setter后执行Invalidate的方面(作为Attribute)。 (也可以在班级完成。)

https://www.postsharp.net/允许在c#中使用AOP 我曾经自己尝试过一次,遗憾的是我们团队的其他成员并不认为这种样板是个问题。所以我再次放弃它,但它可以完全按照你想要的那样做。