मैं विजुअल स्टूडियो के लिए स्निपेट का उपयोग करता हूं, जो बैकिंग स्टोरेज और मेरे लिए इवेंट बढ़ाने के साथ संपत्ति उत्पन्न करता है। सीधे शब्दों में (या अन्य नाम यदि आप चाहें) नाम propchanged
साथ xml फ़ाइल बना सकते हैं और सामग्री निम्नलिखित:
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>propchanged</Title>
<Shortcut>propchanged</Shortcut>
<Description>Code snippet for property (with call to OnPropertyChanged) and backing field</Description>
<Author>lazyberezovsky</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<ToolTip>Property type</ToolTip>
<Default>string</Default>
</Literal>
<Literal>
<ID>property</ID>
<ToolTip>Property name</ToolTip>
<Default>MyProperty</Default>
</Literal>
<Literal>
<ID>field</ID>
<ToolTip>The variable backing this property</ToolTip>
<Default>myVar</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[private $type$ $field$;
public $type$ $property$
{
get { return $field$;}
set
{
if ($field$ == value)
return;
$field$ = value;
OnPropertyChanged("$property$");
}
}
$end$]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
और C:\Users\YourName\Documents\Visual Studio 2010\Code Snippets\Visual C#\My Code Snippets\
फ़ोल्डर में डाल दिया।
अगला, मैं कुछ बेस व्यू मॉडेल से अपने व्यू मॉडल्स का उत्तराधिकारी हूं, जो INotifyPropertyChanged
इंटीफेस लागू करता है और `PropertyChanged 'ईवेंट उत्पन्न करने के लिए संरक्षित विधि OnPropertyChanged
प्रदान करता है।
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName);
}
}
अब जब आप दृश्य स्टूडियो में propchanged
लिखते हैं, तो आप संपत्ति प्रकार और नाम के लिए पूछना, और आप के लिए कोड जनरेट करेगा।
public class PersonViewModel : ViewModel
{
// type here 'propchanged' (or other shortcut assigned for snippet)
}
अद्यतन:
एक अन्य विकल्प PostSharp तरह AOP ढांचे द्वारा कोड पैदा कर रहा है। इस मामले में संकलन के दौरान कोड उत्पन्न और जोड़ा जाएगा (इस प्रकार आपकी कक्षाएं साफ रहेंगी)। Here को लागू करने INotifyProperty PostSharp के द्वारा बदले की उदाहरण है विशेषताओं:
[Notify]
public class PersonViewModel
{
public Jurisdiction CountryResidence { get; set; }
public Jurisdiction CountryBirth { get; set; }
}
स्रोत
2012-04-16 13:22:55
+1 वाक्यांश "samey कोड" शब्द को गढ़ने के लिए! मुझे इसका इस्तेमाल करना होगा। – Zannjaminderson
यदि आप सी # 5 का उपयोग कर रहे हैं, तो आप कुछ विशेषताओं के साथ कुछ बॉयलरप्लेट कोड से छुटकारा पा सकते हैं।यहां देखें: http://bhrnjica.net/2012/03/18/new-feature-in-c-5-0-callermembername/ – Vlad
@Vlad धन्यवाद, यह साफ दिखता है। इस मामले में हालांकि सभी सी # 5 मुझे 'ऑनप्रॉपर्टी चेंज' से स्ट्रिंग को हटाने की क्षमता देता है, है ना? – Oliver