Resharper自定义模式:忽略属性属性

Yoe*_*eri 5 c# resharper visual-studio-2010 resharper-6.0

我正在编写一些Resarper Custom Patterns来警告我们一些需要注意的代码结构.其中一个是使用lambda变量OnPropertyChanged(()=> propertyname)替换OnpropertyChanged("String")

我定义的搜索模式是:

 public $type$ $property$
 {
            get { return $backingfield$; }
            set
            {
                if($backingfield$  != value) {
                    $backingfield$ = value;
                    OnPropertyChanged($String$);
                }
           }
 }
Run Code Online (Sandbox Code Playgroud)

这种模式正在被替换为:

public $type$ $property$
{
        get { return $backingfield$; }
        set
        {
            if($backingfield$  != value) {
                $backingfield$ = value;
                OnPropertyChanged(() => $property$);
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

问题: 应用此时,Resharper会抛弃属性上定义的属性.这个片段:

[MyAttribute]
public int Test
{
            get { return _Test; }
            set
            {
                if (_Test != value)
                {
                    _Test = value;
                    OnPropertyChanged("Test");
                }
            }
}
Run Code Online (Sandbox Code Playgroud)

被取代

public int Test
{
            get { return _Test; }
            set
            {
                if (_Test != value)
                {
                    _Test = value;
                    OnPropertyChanged(() => Test);
                }
            }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能保留属性?

更新:将从System.Attribute派生的类型占位符添加到搜索和替换模式部分修复它.

[$Attributes$]
...
Run Code Online (Sandbox Code Playgroud)

剩下的问题是属性占位符只匹配一个属性,它在多个属性上失败.

brg*_*ner 2

如果您无法获得其他解决方案,则有一个解决方法。
您使用搜索模式(不使用替换模式)来显示警告。我认为这已经有效了。
然后,您创建一个Surround 模板,将字符串替换为()=>PropName。请参阅图片示例:

在此输入图像描述

然后您会收到搜索模式的警告并被环绕模板替换。
用法是:如果看到警告选择字符串,请按 Ctrl+E、Ctrl+U 并选择 template String to func returned property

当然,琴弦的选择也很麻烦。但这是我迄今为止发现的最好的。