获取MethodInfo签名

时间:2012-05-18 19:20:32

标签: c# string reflection signature methodinfo

假设您有一个与方法myMethod相关的MethodInfo:

void myMethod(int param1, int param2) { }

并且您想要创建一个表示方法签名的字符串:

string myString = "myMethod (int, int)";

循环使用MethodInfo参数,我可以通过调用参数类型'ToString方法来实现这些结果:

"myMethod (System.Int32, System.Int32)"

如何改进并产生上述结果?

2 个答案:

答案 0 :(得分:0)

据我所知,没有任何内置功能可以将基元(System.Int32)的真实类型名称转换为内置别名({{1} })。由于这些别名的数量非常少,因此编写自己的方法并不困难:

int

话虽如此,如果用户实际上 public static string GetTypeName(Type type) { if (type == typeof(int)) // Or "type == typeof(System.Int32)" -- same either way return "int"; else if (type == typeof(long)) return "long"; ... else return type.Name; // Or "type.FullName" -- not sure if you want the namespace } 而不是System.Int32中输入(当然这将是完全合法的),这种技术仍会打印出“int ”。你可以做很多事情,因为int两种方式都是相同的 - 所以你无法找出用户实际键入的变体。

答案 1 :(得分:0)

之前已经问过这个问题,它可以通过CodeDom api完成。请参阅thisthis。请注意,这些关键字(int,bool等)是特定于语言的,因此如果您为一般的.NET使用者输出此关键字,通常首选框架类型名称。