मैं एक वर्ग जो INotifyPropertyChanged
इस तरह लागू करता है पर:स्विच-प्रकरण Class.PropertyName (नहीं मान)
public class Person : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
string _color;
public string Color
{
get{ return _color; }
set
{
_color = value;
RaisePropertyChanged();
}
}
...
private void RaisePropertyChanged([CallerMemberName]string prop = "")
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
जब Color
संपत्ति सेटर कहा जाता है, यह RaisePropertyChanged()
जो स्वत: "Color"
यानी संपत्ति नाम हो जाता है कॉल और PropertyChangedEventArgs
को पॉप्युलेट करने के लिए इसका उपयोग करता है। संपत्ति नाम में मैन्युअल रूप से टाइप करने के बजाय।
यह अच्छा है क्योंकि यह आपके कोड में संभावित बग को रोकता है क्योंकि आपको मैन्युअल रूप से संपत्ति का नाम टाइप नहीं करना पड़ता है। आपके कोड को रीफैक्टर करते समय भी मदद करता है क्योंकि आप किसी स्ट्रिंग को हार्ड-कोडिंग नहीं कर रहे हैं।
मेरे प्रश्न
मैं PropertyChanged
के लिए एक ईवेंट हैंडलर की है। संपत्ति नामों को स्ट्रिंग के रूप में हार्ड कोडिंग किए बिना मैं स्विच-केस निर्माण का उपयोग कैसे कर सकता हूं। तो इस तरह कुछ:
void Person_PropertyChanged(object sender, PropertyChangedEventArgs e){
switch (e.PropertyName)
{
case PropertyNameOf(Person.Color);
//some stuff
break;
default:
break;
}
}
क्या यह संभव है? मैं ऐसा करना चाहता हूं इसलिए मैं ऊपर बताए गए लाभों को रख सकता हूं।
आपको 'केस' के अंदर क्या करने की आवश्यकता है? –
@NateBarbettini कुछ सामान। मैंने इसे छोड़ दिया क्योंकि मुझे नहीं लगता कि यह – Krimson
प्रश्न के लिए प्रासंगिक था आप सी # 6 के 'nameof' ऑपरेटर की तलाश में हैं। – SLaks