我正在编写一些 Resarper 自定义模式来警告我们一些需要注意的代码结构。其中之一是将 OnpropertyChanged("String") 替换为 lambda 变体 OnPropertyChanged(() => propertyname)
我定义的搜索模式是:
public $type$ $property$
{
get { return $backingfield$; }
set
{
if($backingfield$ != value) {
$backingfield$ = value;
OnPropertyChanged($String$);
}
}
}
此模式正在替换为:
public $type$ $property$
{
get { return $backingfield$; }
set
{
if($backingfield$ != value) {
$backingfield$ = value;
OnPropertyChanged(() => $property$);
}
}
}
问题: 应用此功能时,Resharper 会丢弃属性上定义的属性。这个片段:
[MyAttribute]
public int Test
{
get { return _Test; }
set
{
if (_Test != value)
{
_Test = value;
OnPropertyChanged("Test");
}
}
}
被替换为
public int Test
{
get { return _Test; }
set
{
if (_Test != value)
{
_Test = value;
OnPropertyChanged(() => Test);
}
}
}
我怎样才能保留属性?
更新:将派生自 System.Attribute 的类型占位符添加到搜索和替换模式可以部分修复它。
[$Attributes$]
...
剩下的问题是 Attribute 占位符只匹配一个属性,它在多个属性上失败。