2009-01-09 13 views
49

Czy istnieje prosty sposób korzystania z odbicia, aby uzyskać listę parametrów dla delegata, jeśli posiadasz informacje o jego typie?Czy mogę uzyskać podpis delegata C# według jego typu?

Dla przykładu, jeśli zadeklarować typ delegata następująco

delegate double FooDelegate (string param, bool condition); 

a później uzyskać informacje typu dla danego typu delegata następująco

Type delegateType = typeof(FooDelegate); 

to możliwe, aby odzyskać typ zwracany (podwójne) i lista parametrów ({string, bool}) z tego typu obiektu informacyjnego?

Odpowiedz

90
MethodInfo method = delegateType.GetMethod("Invoke"); 
    Console.WriteLine(method.ReturnType.Name + " (ret)"); 
    foreach (ParameterInfo param in method.GetParameters()) { 
     Console.WriteLine("{0} {1}", param.ParameterType.Name, param.Name); 
    } 
+7

Idealny! Głębsze kopanie, powodem tego jest fakt, że deklaracja delegata to w zasadzie cukier składniowy do deklarowania klasy pochodnej od Delegata z nową metodą Invoke, która przyjmuje określone parametry. Dzięki za pomoc. – fastcall

Powiązane problemy