首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取MethodInfo签名

获取MethodInfo签名
EN

Stack Overflow用户
提问于 2012-05-19 03:20:32
回答 2查看 1.4K关注 0票数 0

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

代码语言:javascript
复制
void myMethod(int param1, int param2) { }

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

代码语言:javascript
复制
string myString = "myMethod (int, int)";

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

代码语言:javascript
复制
"myMethod (System.Int32, System.Int32)"

我如何改进这一点并产生上面所示的结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-19 13:41:53

这个问题以前已经问过了,可以通过CodeDom应用编程接口来解决。参见thisthis。请注意,这些关键字(int、bool等)是特定于语言的,所以如果您是为一般的.NET使用者输出的,框架类型名称通常是首选的。

票数 0
EN

Stack Overflow用户

发布于 2012-05-19 03:28:33

据我所知,没有内置的东西可以将原语(System.Int32)的真实类型名转换为内置的别名(int)。由于这些别名的数量非常少,因此编写自己的方法并不太难:

代码语言:javascript
复制
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都是相同的--所以您无法找出用户实际输入的是哪个变体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10658563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档