我在用户控件中有这样的代码。这个想法就像普通变量一样,但是设置后,它会强制控件重绘。
private int _imageHeight;
public int ImageHeight
{
get { return _imageHeight; }
set
{
_imageHeight = value;
Invalidate();
}
}
我理解{ get; set; }
为我提供了我刚刚编写的所有代码,但Invalidate()
部分除外。有没有什么方法我不必写变量declare和getter / setter代码但仍然得到Invalidate()部分?
答案 0 :(得分:2)
您正在寻找的概念称为面向方面编程。 使用面向方面编程,您可以摆脱Boilerplate并声明在调用setter后执行Invalidate的方面(作为Attribute)。 (也可以在班级完成。)
https://www.postsharp.net/允许在c#中使用AOP 我曾经自己尝试过一次,遗憾的是我们团队的其他成员并不认为这种样板是个问题。所以我再次放弃它,但它可以完全按照你想要的那样做。