2016-03-31 3 views
8

क्या गेटटर/सेटर में वर्तमान संपत्ति का नाम पाने का कोई तरीका है?सी # 6: गेटटर/सेटर में नाम संपत्ति (0) वर्तमान संपत्ति

कुछ इस तरह:

public string MyProperty 
{ 
    get { return base.Get<string>(nameof(ThisProperty)); } 
    set { base.Set<string>(nameof(ThisProperty), value); } 
} 

(ThisProperty "MyProperty" वापसी होगी)।

धन्यवाद!

+1

'nameof (MyProperty) 'ठीक काम करना चाहिए? – MarcinJuraszek

+5

क्यों होना चाहिए? 'Nameof (MyProperty)' लिखने में समस्या क्या है? –

+0

यह उस मामले में उपयोगी हो सकता है जहां नाम 'मायप्रॉपर्टी' बदल सकता है: फिर, आपको 'nameof (जो भी)' अपडेट करना याद रखना होगा, हालांकि विजुअल स्टूडियो आईडीई को इस समस्या को पकड़ना चाहिए। – levelonehuman

उत्तर

17

यह nameof के साथ नहीं किया जा सकता है, लेकिन एक बेहतर तरीका भी है (सी # 5 के बाद उपलब्ध)। आप propertyName पैरामीटर वैकल्पिक बनाने के लिए और यह करने के लिए CallerMemberName विशेषता लागू कर सकते हैं: अब

protected void Set<T>(T value, [CallerMemberName] string propertyName = null) 
{ 
    ... 
} 

protected T Get<T>([CallerMemberName] string propertyName = null) 
{ 
    ... 
} 

अगर आप propertyName के लिए तर्क को छोड़ देते हैं, वर्तमान सदस्य नाम परोक्ष पारित हो जाता है:

public string MyProperty 
{ 
    get { return base.Get<string>(); } // same as calling Get<string>("MyProperty") 
    set { base.Set<string>(value); } // same as calling Set<string>(value, "MyProperty") 
} 
+0

यह है एक अद्भुत जवाब! धन्यवाद महोदय! – Smartis

+0

बहुत बहुत धन्यवाद! – evaenrique

+0

मैं आपकी पहली वाक्य से अलग होना चाहता हूं। सी # 6 के रूप में, 'nameof' वास्तव में नौकरी करेगा:' सार्वजनिक स्ट्रिंग MyProperty { {वापसी आधार प्राप्त करें। (नाम (MyProperty)); } सेट {base.Set (नाम (MyProperty), मान); } } ' – takrl

-3

वैकल्पिक करने के लिए है एक गेट और सेट के बाद विधिबेस आवश्यक रूप से विधियां हैं।

public string MyProperty 
{ 
    get 
    { 
     return MethodBase.GetCurrentMethod().Name.Substring(4); 
    }    
} 

सबस्ट्रिंग वहाँ क्योंकि प्रत्येक नाम get_ और set_

इस परिणाम के रूप में MyProperty रिटर्न के साथ उपसर्ग जाता है।

संबंधित मुद्दे