2009-01-09 43 views
49

如果您有類型信息,是否有直接的方法使用反射來獲取委託的參數列表?我可以通過它的類型獲取C#委託的簽名嗎?

舉個例子,如果我聲明委託類型如下

delegate double FooDelegate (string param, bool condition); 

,後來得到的是委託類型的類型信息如下

Type delegateType = typeof(FooDelegate); 

是否有可能恢復的返回類型(雙)和參數列表({字符串,布爾})從該類型的信息對象?

回答

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

完美!深入挖掘,其原因是聲明委託基本上是用於聲明派生自Delegate的類的語法糖,並帶有一個新的Invoke方法,該方法接受指定的參數。 感謝您的幫助。 – fastcall 2009-01-09 20:49:37

相關問題