.NET 4.5.3 के आगमन के साथ, WPF डेवलपर्स के पास अब संपत्ति परिवर्तनों के INotifyPropertyChanged
Interface को सूचित करने के तीन (या अधिक) तरीके हैं। असल में, मेरा प्रश्न है .NET 4.5 से शुरू की गई दो विधियों में से कौन सा संपत्ति परिवर्तनों को सूचित करने का और अधिक प्रभावी तरीका है और क्या WPF में उपयोग किए जाने पर किसी भी तरह का कोई लाभ है?क्या .NET 4.5.3 में संपत्ति परिवर्तनों को सूचित करने के लिए CallerMemberNameAttribute के बजाय नाम के ऑपरेटर का उपयोग करने का कोई लाभ है?
पृष्ठभूमि
उन इस विषय के साथ इतना परिचित नहीं के लिए, यहाँ मुख्य तीन तरीके हैं। पहले बस एक स्ट्रिंग पास करने का मूल है, और अधिक त्रुटियों की संभावना विधि है:
public string TestValue
{
get { return testValue; }
set { testValue = value; NotifyPropertyChanged("TestValue"); }
}
protected virtual void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
दूसरी विधि में .NET 4.5 पेश किया गया था; CallerMemberNameAttribute
:
public string TestValue
{
get { return testValue; }
set { testValue = value; NotifyPropertyChanged(); }
}
protected virtual void NotifyPropertyChanged([CallerMemberName]string propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
तीसरे और सबसे हाल ही में विधि थी (या जल्दी ही हो जाएगा) नेट 4.5.3 के हिस्से के रूप में शुरू की गई सी # 6.0; nameof
Operator:
public string TestValue
{
get { return testValue; }
set { testValue = value; NotifyPropertyChanged(nameof(TestValue)); }
}
protected virtual void NotifyPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
मेरा अपना धारणा होगा कि बस एक स्ट्रिंग पास करने का मूल है, और अधिक त्रुटियों की संभावना विधि, सबसे कारगर होगा के रूप में मैं केवल कल्पना कर सकते हैं कि अन्य दो तरीकों प्रतिबिंब के कुछ फार्म का उपयोग करें। हालांकि, मैं वास्तव में यह जानना चाहता हूं कि अन्य दो तरीकों में से कौन सा और अधिक कुशल है और क्या वास्तव में CallerMemberNameAttribute
विशेषता और nameof
ऑपरेटर का उपयोग WPF संदर्भ में करने के बीच वास्तव में कोई अंतर होगा।
"तीसरी और सबसे हाल ही में विधि था (या जल्दी ही हो जाएगा) के रूप में में शुरू सी # 6.0 .NET 4.5.3 का हिस्सा; ऑपरेटर का नाम "- सख्ती से बोलना 'nameof' एक [भाषा सुविधा] है (https://github.com/dotnet/roslyn/wiki/New-Language- विशेषताएं-in-C%23 -6) और ढांचे का एक हिस्सा नहीं है। –