Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将CLR类型名称转换为等效的惯用C#别名(例如System.String=>;String,Int32=>;int)_C# - Fatal编程技术网

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

将CLR类型名称转换为等效的惯用C#别名(例如System.String=>;String,Int32=>;int),c#,C#,我正在解析一些对象,我想动态生成一些代码。 问题是,当我阅读类型时,我会得到如下信息: System.String System.Int32 Boolean 我知道C#to string,int和bool是完全相同的。但是当我解析我的对象时,我得到了“系统”版本,我想使用字符串动态生成一些代码,我想生成别名描述,我能简单地做到吗?(如果没有字典之类的东西将typeof与字符串关联起来……)我不知道如何做到这一点。但是,没有那么多类型,所以如果是我,我可能只会编写一个映射函数 您可以在此处找到C

我正在解析一些对象,我想动态生成一些代码。 问题是,当我阅读类型时,我会得到如下信息:

System.String
System.Int32
Boolean

我知道C#to string,int和bool是完全相同的。但是当我解析我的对象时,我得到了“系统”版本,我想使用字符串动态生成一些代码,我想生成别名描述,我能简单地做到吗?(如果没有字典之类的东西将typeof与字符串关联起来……)

我不知道如何做到这一点。但是,没有那么多类型,所以如果是我,我可能只会编写一个映射函数

您可以在此处找到C#类型名称列表作为起点:

更新:这里是C#的参考,其中包括十进制。不知道为什么上面的链接中缺少了这一点:
字符串和int是System.string和System.Int32的别名

似乎您可以使用此命令从字符串中获取类型:

但无法从类型中获取字符串,因此您必须在其中定义自己的映射:

一旦编译用C编写的代码,它就不再知道它来自C代码,因此如果不完全按照您的建议执行,就无法自动获取C别名-创建一个简单的映射字典

这里列出了内置的C#类型:


此列表不会很快更改,因为我不必担心将此列表硬编码到您的应用程序中。

从未注意过它,正在修复它!“解析某些对象”的确切含义是什么?显示一些代码!我编辑了你的标题以避免混淆,因为“类型转换”是完全不同的事情。你不能这样做。你得到的是实际的类型,“int”、“string”等等,不过是别名。@James ooh,那么我想我是想避免这种情况,我将自己创建关联映射:(我可以从“dateTimeTypeRef”和“int32typeRef”中得到一个字符串?我试着字符串()但是我得到了:System.CodeDom.CodeTypeReferenceNo你不能:(奇怪,“decimal”该表中缺少。它包含在其他两个答案链接到的表中。
// Creates a reference to the System.Int32 type.
CodeTypeReference int32typeRef = new CodeTypeReference("System.Int32");