有没有办法通过反射获得类型的别名? [英] Is there a way to get a type's alias through reflection?
本文介绍了有没有办法通过反射获得类型的别名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在编写一个简单的代码生成应用程序,以从 DB2 数据库模式构建 POCO.我知道这并不重要,但我更喜欢使用类型别名而不是实际的系统类型名称(如果它们可用),即int"而不是Int32".有没有办法使用反射来获取类型的别名而不是实际类型?
I'm writing a simple code generation application to build POCO's from a DB2 database schema. I know it doesn't matter, but I prefer to use type aliases rather than the actual system type name if they are available, i.e., "int" rather than "Int32." Is there a way using reflection that I can get a type's alias rather than it's the actual type?
//Get the type name
var typeName = column.DataType.Name;
//If column.DataType is, say, Int64, I would like the resulting property generated
//in the POCO to be...
public long LongColumn { get; set; }
//rather than what I get now using the System.Reflection.MemberInfo.Name property:
public Int64 LongColumn { get; set; }
推荐答案
不 - 只需创建一个 Dictionary
将所有类型映射到它们的别名.这是一个固定的集合,所以不难做:
Nope - just create a Dictionary<Type,string>
to map all of the types to their aliases. It's a fixed set, so it's not hard to do:
private static readonly Dictionary<Type, string> Aliases =
new Dictionary<Type, string>()
{
{ typeof(byte), "byte" },
{ typeof(sbyte), "sbyte" },
{ typeof(short), "short" },
{ typeof(ushort), "ushort" },
{ typeof(int), "int" },
{ typeof(uint), "uint" },
{ typeof(long), "long" },
{ typeof(ulong), "ulong" },
{ typeof(float), "float" },
{ typeof(double), "double" },
{ typeof(decimal), "decimal" },
{ typeof(object), "object" },
{ typeof(bool), "bool" },
{ typeof(char), "char" },
{ typeof(string), "string" },
{ typeof(void), "void" }
};
这篇关于有没有办法通过反射获得类型的别名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文