2009-01-09 60 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

相关问题