2009-08-28 12 views
27

में प्रतिबिंब का उपयोग इंडेक्सर indentifying मैं मैं typeof के परिणाम (MyClass) .GetProperties() में कस्टम इंडेक्सर की पहचान कैसे कर सकते हैं ताकिएक कस्टम सी #

public string this[VehicleProperty property] 
{ 
    // Code 
} 

की तरह एक कस्टम इंडेक्सर के साथ एक वर्ग है?

उत्तर

38

तुम भी सूचकांक मापदंडों के लिए देख सकते हैं, PropertyInfo.GetIndexParameters पद्धति का उपयोग करके, अगर यह 0 से अधिक आइटम देता है, यह एक अनुक्रमित संपत्ति है:

foreach (PropertyInfo pi in typeof(MyClass).GetProperties()) 
{ 
    if (pi.GetIndexParameters().Length > 0) 
    { 
     // Indexed property... 
    } 
} 
+0

+1 मुझे इसे मारने के लिए +1 (मैं अभी भी टाइप कर रहा था) – MaLio

4

टाइप स्तर पर परिभाषित DefaultMemberAttribute देखें।

(यह IndexerNameAttribute हुआ करता था, लेकिन वे इसे गिरा दिया गए हैं लगता है)

+0

'DefaultMemberAttribute' नहीं आवश्यक संदर्भ एक इंडेक्सर करता है, देखते हैं कि यह [जवाब] (https://stackoverflow.com/a/1119949/1161635)। – Herman

3
static void Main(string[] args) { 

     foreach (System.Reflection.PropertyInfo propertyInfo in typeof(System.Collections.ArrayList).GetProperties()) { 

      System.Reflection.ParameterInfo[] parameterInfos = propertyInfo.GetIndexParameters(); 
      // then is indexer property 
      if (parameterInfos.Length > 0) { 
       System.Console.WriteLine(propertyInfo.Name); 
      } 
     } 


     System.Console.ReadKey(); 
    } 
संबंधित मुद्दे