मैं कुछ Resarper कस्टम पैटर्न लिख रहा हूँ कुछ कोड निर्माणों कि ध्यान देने की जरूरत के बारे में हमें चेतावनी देने के लिए। इनमें से एक एक लैम्ब्डा प्रकार के साथ OnpropertyChanged ("स्ट्रिंग") को बदल रहा है OnPropertyChanged (() => प्रॉपर्टी)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);
}
}
}
के साथ बदल जाता है कैसे मैं विशेषताओं की रक्षा कर सकते ??
अद्यतन: दोनों खोज और पैटर्न को बदलने के लिए एक प्रकार प्लेसहोल्डर System.Attribute से प्राप्त जोड़ा जा रहा है यह आंशिक रूप से ठीक करता है।
[$Attributes$]
...
समस्या शेष है कि गुण प्लेसहोल्डर केवल एक विशेषता से मेल खाता है, यह कई विशेषताओं पर विफल रहता है।
क्या आपको वास्तव में पूरी संपत्ति की खोज करने की आवश्यकता है? हो सकता है कि आप केवल 'ऑनप्रॉपर्टी चेंज ($ स्ट्रिंग $) की खोज कर सकें;' और इसे 'ऑनप्रॉपर्टी चेंज (() => $ स्ट्रिंग $) द्वारा प्रतिस्थापित करें; '। – brgerner
ऐसा करने पर, OnpropertyChanges ("test") को OnPropertyChanged (() => "test" के साथ बदल दिया जाता है)। परीक्षण प्लेसहोल्डर को प्रकार स्ट्रिंग की अभिव्यक्ति के रूप में परिभाषित किया जाता है। – Yoeri
आप सही हैं। यह मेरी गलती थी। – brgerner