我正在解析一些对象,并且希望动态生成一些代码。 问题在于,当我读取类型时,会得到类似以下的内容:
System.String
System.Int32
Boolean
我知道对于C#来说,string,int和bool是严格相同的。但是当我解析我的对象时,我得到了“System”版本,并且我想使用字符串动态生成一些代码,并且我想生成别名描述,我能轻松地做到吗? (不需要像Dictionary这样将typeof与字符串关联...)
我正在解析一些对象,并且希望动态生成一些代码。 问题在于,当我读取类型时,会得到类似以下的内容:
System.String
System.Int32
Boolean
我知道对于C#来说,string,int和bool是严格相同的。但是当我解析我的对象时,我得到了“System”版本,并且我想使用字符串动态生成一些代码,并且我想生成别名描述,我能轻松地做到吗? (不需要像Dictionary这样将typeof与字符串关联...)
http://msdn.microsoft.com/en-us/library/86792hfa(VS.71).aspx
更新:这里有一个包括十进制数的C#参考链接。不确定为什么上面的链接中缺少它: http://msdn.microsoft.com/en-us/library/ya5y69ds.aspxstring和int是System.String和System.Int32的别名。
似乎可以使用这个方法从字符串中获取类型:http://msdn.microsoft.com/en-us/library/system.codedom.codetypeofexpression.aspx
// Creates a reference to the System.Int32 type.
CodeTypeReference int32typeRef = new CodeTypeReference("System.Int32");
但是没有办法从类型中获取字符串,因此您必须在那里定义自己的映射: 通过反射获取类型别名的方法有吗?
一旦您编译了使用C#编写的代码,它就不再知道它来自C#代码,因此没有办法自动获取C#别名,除非按照您建议的方式创建一个简单的映射字典。
内置的C#类型在这里列出:http://msdn.microsoft.com/en-US/library/ya5y69ds.aspx
这个列表不会很快改变,所以您不必担心硬编码这个列表到您的应用程序中。