我正在編寫一些Resarper自定義模式,以警告我們需要注意的一些代碼構造。其中之一是用的λ的變體取代OnpropertyChanged( 「字符串」)OnPropertyChanged(()=> PROPERTYNAME)Resharper自定義模式:忽略屬性屬性
我所限定的搜索模式是:
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);
}
}
}
代替我如何保存的屬性?
UPDATE: 將派生自System.Attribute的類型佔位符添加到搜索和替換模式中都會部分修復它。
[$Attributes$]
...
剩下的問題是,屬性佔位符只匹配一個屬性,它無法在多個屬性。
你是否真的需要搜索整個屬性?也許你可以搜索'OnPropertyChanged($ String $);'並用'OnPropertyChanged(()=> $ String $);'替換它。 – brgerner 2012-02-23 09:16:04
當這樣做時,OnPropertyChanges(「測試」)被替換爲OnPropertyChanged(()=>「test」)。測試佔位符被定義爲一個字符串類型的表達式。 – Yoeri 2012-02-23 10:11:01
你說得對。這是我的錯誤。 – brgerner 2012-02-23 11:20:41