我想转换一个 C# 风格的泛型类型 string,比如:
"System.Dictionary<System.String, System.String>"
与其 CLR 等效:
"System.Dictionary`1[System.String, System.String]"
然后返回。有没有一种简单的方法可以做到这一点,还是我必须求助于字符串操作?
编辑:
我只有 C#/VB/等格式的字符串表示。我手边没有 Type 对象或类似的东西。另一个问题是:如何从 "System.Dictionary<System.String, System.String>"
这样的字符串表示中获取 Type 对象(之后我可以获得类型对象的全名)。
编辑#2:
理由:我正在使用 CodeDom
动态创建对象.我生成 CodeDom
的输入可能包含 C#
中的类型(或任何其他专有格式,如 VB.NET),但我必须在 CodeTypeReference
中使用它们, 它只接受 CLR 样式格式。
最佳答案
对于从 .NET 到 C# 的方向,我看不到一个简单的方法;您可能必须自己实际解析类型。
反之,这很简单:
public static string DotNetToCSharp(string tyName) {
var provider = new Microsoft.CSharp.CSharpCodeProvider();
return provider.GetTypeOutput(new System.CodeDom.CodeTypeReference(tyName));
}
关于c# - 将泛型类型定义字符串从 C# 样式转换为 CLR 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2925721/