5

我有这个问题:

我想从对象信息中生成一个新的源代码文件。

我做了这样的事情:

dictParamMapping 是Dictionary<string, Type>其中字符串是变量名,Type 是该变量的类型。

我使用以下方法构建新代码的类型:

dictParamMapping[pairProcess.Value].Type.Name (or FullName)

当 Type 是 int、string、datatable 等时,一切正常,但当它是字典、列表或任何其他类似的东西时,它会返回如下内容:

System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Double, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]

构建新的源代码是不正确的。我想得到类似的东西Dictionary<int, double>

谁能帮我?

4

2 回答 2

3

您似乎想从System.Type. 你可以在CSharpCodeProvider课堂上做到这一点。

var typeReference = new CodeTypeReference(typeof(Dictionary<int, double>));

using (var provider = new CSharpCodeProvider())
    Console.WriteLine(provider.GetTypeOutput(typeReference));

输出:

System.Collections.Generic.Dictionary<int, double>

请注意,这不能保证始终为您提供有效的类型名称。特别是,编译器生成的类型(例如闭包)通常具有在 C# 中无效的类型名称。

于 2012-07-02T14:52:58.937 回答
2

这不是在 .NET 中生成源代码的理想方式。有官方支持的方法。

框架公开的 API 称为CodeDOM。您可以浏览文档和示例以了解它可以做什么。这是一个启动示例,展示了如何生成一个类。CodeDOM 支持 C# 和 VB.NET 作为输出语言。

于 2012-07-02T14:39:11.747 回答