Eri*_* J. 6 c# properties visual-studio c#-4.0
语言快捷方式
public string Code
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud)
在C#中定义普通属性时节省了一些输入.
然而,我发现自己编写了高度重复的,不那么平凡的属性代码,仍然遵循明确的模式,例如
public string Code
{
get { return code; }
set
{
if (code != value)
{
code = value;
NotifyPropertyChanged("Code");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我当然可以定义一个Visual Studio片段来减少输入.但是,如果我需要在我的模式中添加一些内容,我必须返回并更改相当多的现有代码.
有更优雅的方法吗?片段是最好的方式吗?
更新:
作为现在的快速改进,我已经编辑(在备份之后)
C:\ Program Files\Microsoft Visual Studio 10.0\VC#\ Snippets\1033\Refactoring\EncapsulateField.snippet
(路径适用于VS 2010)
反映我目前的模式.现在,内置的重构工具使用我的模板从字段创建属性.缺点:Visual Studio的全局更改,无法追溯更改现有属性代码.
这被称为面向方面编程(AOP).
斯科特汉塞尔曼最近接受了LinFu的创始人Philip Laureano的采访.(链接)
根据您的需要,有许多AOP工具.
最后,使用上述工具的一些INotifyPropertyChanged类的实现:
更新2013:自从这个原始答案以来,我遇到了另一种解决方案,可以轻松完成我需要的一切.
PropertyChanged.Fody(以前称为NotifyPropertyWeaver)是一个后编译IL编织器,它会自动为您插入属性更改的代码.这是我对INotifyPropertyChanged的首选解决方案.
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |