2009-08-28 11 views

Odpowiedz

38

Można również szukać parametrów wskaźnikowych, stosując metodę PropertyInfo.GetIndexParameters, jeśli zwróci więcej niż 0 pozycji, jest to własność indeksowane:

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

+1 za pokonanie mnie (wciąż pisałem) – MaLio

4

Poszukaj DefaultMemberAttribute zdefiniowanej na poziomie typu.

(To było IndexerNameAttribute, ale wydaje się, że upuścił)

+0

'DefaultMemberAttribute' nie musi koniecznie odnosić się indeksator zawiera ten [odpowiedzi] (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(); 
    } 
Powiązane problemy