以编程方式在.NET中获取Type的Alias

时间:2010-08-04 20:19:34

标签: reflection

是否可以通过反射确定对象类型的别名?给出以下示例,其中 myObject 的类型为System.Int32 - 例如

Type t = myObject.GetType();

t.Name 将为 Int32 。但是,我想确定相关对象的可能别名(如果有的话),这样除了之外我还可以解析 int 的类型名称的的Int32

我不打算花很多时间在这上面。如果没有一个极其简单的内置解决方案,我只会自己映射这些值。 =)

3 个答案:

答案 0 :(得分:5)

不直接反射,没有反射。 “类型名称”(正如您所说)“int”根本不是类型名称,而是语言关键字。

当然,您可以使用字典将类型名称中的查找存储到较短的便利形式中。但是反射API中没有任何内容可以帮助你。

答案 1 :(得分:5)

您可以使用CodeDom类

获取特定于语言的类型别名
    var cs = new CSharpCodeProvider();
    var vb = new VBCodeProvider();

    var type = typeof (int);
    Console.WriteLine("Type Name: {0}", type.Name); // Int32
    Console.WriteLine("C# Type Name: {0}", cs.GetTypeOutput(new CodeTypeReference(type))); // int
    Console.WriteLine("VB Type Name: {0}", vb.GetTypeOutput(new CodeTypeReference(type))); // Integer

答案 2 :(得分:0)

别名似乎只是编译时。请注意它们如何不在给定源文件之外应用。它们只是便利,仅此而已。