将CLR类型名称转换为等效的C#习惯用语别名(例如System.String => string,Int32 => int)

3

我正在解析一些对象,并且希望动态生成一些代码。 问题在于,当我读取类型时,会得到类似以下的内容:

System.String
System.Int32
Boolean

我知道对于C#来说,string,int和bool是严格相同的。但是当我解析我的对象时,我得到了“System”版本,并且我想使用字符串动态生成一些代码,并且我想生成别名描述,我能轻松地做到吗? (不需要像Dictionary这样将typeof与字符串关联...)


以前从未注意过它,现在来修复它! - Guillaume Slashy
1
你所说的“解析一些对象”具体是什么意思?能展示一些代码吗? - jcvandan
1
我修改了您的标题以避免混淆,因为“类型转换”是一件完全不同的事情。 - AakashM
你不能这样做。你得到的是实际类型,"int"、"string"等只是别名。 - Alex
@James 噢,http://meta.stackexchange.com/questions/99812/who-has-the-power-to-delete-a-comment 那我猜是这样的。 - AakashM
3个回答

3

奇怪,“小数”在那张表格中找不到。其他两个回答链接的表格中包含它。 - RenniePet

1

我想避免这种情况,我会自己创建关联映射 :( - Guillaume Slashy
我可以从 "dateTimeTypeRef" 和 "int32typeRef" 获取字符串吗?我尝试使用 toString() 但是得到了:System.CodeDom.CodeTypeReference。 - Guillaume Slashy
不,你不能 :( https://dev59.com/3nM_5IYBdhLWcg3wfTA0 - luqi

1

一旦您编译了使用C#编写的代码,它就不再知道它来自C#代码,因此没有办法自动获取C#别名,除非按照您建议的方式创建一个简单的映射字典。

内置的C#类型在这里列出:http://msdn.microsoft.com/en-US/library/ya5y69ds.aspx

这个列表不会很快改变,所以您不必担心硬编码这个列表到您的应用程序中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接