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)
剩下的问题是属性占位符只匹配一个属性,它在多个属性上失败.
如果您无法获得其他解决方案,则有一个解决方法。
您使用搜索模式(不使用替换模式)来显示警告。我认为这已经有效了。
然后,您创建一个Surround 模板,将字符串替换为()=>PropName。请参阅图片示例:

然后您会收到搜索模式的警告并被环绕模板替换。
用法是:如果看到警告选择字符串,请按 Ctrl+E、Ctrl+U 并选择 template String to func returned property。
当然,琴弦的选择也很麻烦。但这是我迄今为止发现的最好的。
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |