2009-08-28 8 views

Antwort

38

Sie auch für Indexparameter aussehen kann, die die PropertyInfo.GetIndexParameters Methode verwenden, wenn sie mehr als 0 Produkte gibt es eine indizierte Eigenschaft ist:

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

+1 für mich zu schlagen (ich tippte immer noch) – MaLio

4

Suchen Sie nach der DefaultMemberAttribute definiert auf Typenebene.

(Diese verwendet IndexerNameAttribute zu sein, aber sie scheinen es gefallen zu sein)

+0

Die 'DefaultMemberAttribute' nicht erforderlich Referenz einen Indexer finden Sie in diesem [Antwort] (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(); 
    }