将auto属性转换为完整属性

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.我甚至下载了试用版,仍然无法弄清楚如何做到这一点.

有没有办法用代码片段,宏,甚至免费扩展来做到这一点?看起来它应该相当简单.

Dan*_*Dan 9

如果你有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 \}

确保选中"正则表达式"

这是查找/替换屏幕的样子: FindReplaceImg

它来自

StartImg

至:

EndImg

编辑:感谢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}