获取方法信息签名



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

void myMethod(int param1, int param2) { }

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

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

循环遍历 MethodInfo 参数,我能够通过调用参数类型的 ToString 方法来实现这些结果:

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

我怎样才能改进这一点并产生上面显示的结果?

这个问题之前已经问过了,可以通过CodeDom api来完成。看到这个和这个。请注意,这些关键字(int、bool 等(是特定于语言的,因此,如果要将其输出给一般 .NET 使用者,则通常首选框架类型名称。

据我所知,没有任何内置功能可以将原语(System.Int32(的真实类型名称转换为内置别名(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"。 对此,您无能为力,因为无论哪种方式,System.Type都是一样的 - 因此您无法找出用户实际键入的变体。

相关内容

  • 没有找到相关文章

最新更新