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

Geo*_*ton 3 reflection

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

Type t = myObject.GetType();
Run Code Online (Sandbox Code Playgroud)

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

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

que*_*rin 5

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

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


des*_*sco 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
Run Code Online (Sandbox Code Playgroud)