Bri*_*ton 11 c# properties visual-studio visual-studio-2013
我经常需要使用支持字段将自动属性转换为完整属性,以便我可以实现INotifyPropertyChanged.当一个类有50多个属性时,它变得非常乏味.
public string MyProperty { get; set;}
Run Code Online (Sandbox Code Playgroud)
至
private string _myProperty;
public string MyProperty
{
get
{
return _myProperty;
}
set
{
_myProperty = value;
OnPropertyChanged("MyProperty");
}
}
Run Code Online (Sandbox Code Playgroud)
我能够创建一个代码片段,以上述格式创建一个新属性,但我不知道是否可以提取现有属性的名称和类型并替换它.
我看到了善意,但我真的不想在我的项目中使用奥术魔法.
这个问题解释了如何在Resharper中做到这一点,但我没有Resharper.我甚至下载了试用版,仍然无法弄清楚如何做到这一点.
有没有办法用代码片段,宏,甚至免费扩展来做到这一点?看起来它应该相当简单.
如果你有notepad ++,你可以通过RegEx来做(非常难看,但有效)
找什么: (public)\s+([a-zA-z0-9]+)\s+([a-zA-z0-9]+)\s*\{\s*+get;\s*set;\s*\}
用...来代替: private \2 _\3\; \r\n \1 \2 \3 \r\n \{ \r\n get \{ return _\3\; \} \r\n set \{ _\3=value\; OnPropertyChanged\(\"\3\"\)\; \} \r\n \}
确保选中"正则表达式"
这是查找/替换屏幕的样子:

它来自

至:

编辑:感谢Britton,这里是Visual Studio的等价物:
找: public[^\S\r\n](.+)[^\S\r\n](\b(_\w+|[\w-[0-9_]]\w*)\b)[^\S\r\n]{[^\S\r\n]get;[??^\S\r\n]set;[^\S\r\n]}
更换: private $1 _$2;\r\npublic $1 $2 {\r\nget\r\n{\r\nreturn _$2;\r\n}\r\nset\r\n{\r\n_$2 = value; OnPropertyChanged("$2");\r\n}\r\n}
| 归档时间: |
|
| 查看次数: |
3616 次 |
| 最近记录: |