是否可以通过反射确定对象类型的别名?给出以下示例,其中 myObject 的类型为System.Int32 - 例如
Type t = myObject.GetType();
t.Name 将为 Int32 。但是,我想确定相关对象的可能别名(如果有的话),这样除了之外我还可以解析 int 的类型名称的的Int32
我不打算花很多时间在这上面。如果没有一个极其简单的内置解决方案,我只会自己映射这些值。 =)
答案 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)
别名似乎只是编译时。请注意它们如何不在给定源文件之外应用。它们只是便利,仅此而已。