2010-08-14 13 views
7

क्या कोई तरीका है कि मैं अपने गेटटर से संपत्ति के लिए PropertyInfo प्राप्त कर सकता हूं? इस तरह:क्या उस संपत्ति के गेटटर से PropertyInfo प्राप्त करने का कोई तरीका है?

public object Foo 
{ 
    get 
    { 
     PropertyInfo propertyInfoForFoo = xxx; 
     ... 
    } 
} 

मैं स्ट्रिंग के रूप में संपत्ति का नाम हार्ड कोड रखने से बचाना चाहता हूं, क्योंकि यह बनाए रखना मुश्किल है।

मैं .NET 2.0 का उपयोग कर रहा हूं, इसलिए मैं एक linq-less समाधान की उम्मीद कर रहा हूं।

+0

के संभावित डुप्लिकेट [कैसे प्रतिबिंब के माध्यम से वर्तमान संपत्ति नाम पाने के लिए?] (Http://stackoverflow.com/questions/1206023/how-to-get-current-property-name-via-reflection) – nawfal

उत्तर

5

MethodBase.GetCurrentMethod() get_YourPropertyName के लिए MethodInfo ऑब्जेक्ट वापस कर देगा।

PropertyInfo property = GetType() 
          .GetProperty(MethodBase 
              .GetCurrentMethod() 
              .Name 
              .Substring("get_".Length) 
             ); 
0

उम ... तो आप गेटटर "दिए गए" होने की योजना कैसे बना रहे थे?

एक ही रास्ता मैं देख रहा हूँ, जैसे MyGetProperyInfo(x => x.Foo);

जो किया जा सकता है कुछ कर रहा है, हालांकि यह एक लैम्ब्डा & एक अभिव्यक्ति <> (जिनमें से न तो सी # वी 2 में उपलब्ध है) की आवश्यकता है

+0

Lambdas सी # 2 में उपलब्ध हैं, बस linq नहीं। अभिव्यक्ति <> के बारे में निश्चित नहीं है। –

+0

@JOnB: 'अभिव्यक्ति' और सभी उपप्रकार सिस्टम में लागू किए गए हैं। अधिक असेंबली, और .NET 3.5 में जोड़े गए थे। – Richard

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

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