我正在进行代码生成,在此任务中,我需要创建可能包含类型参数的typename的C#表示。
E.g。我需要从“Dictionary`2 [[int],[string]] ”获取“Dictionary< int,string>”。
在通用情况下,这应该比仅仅替换字符串复杂得多。
更新以回答问题中的评论
Type
字符串或CROSS APPLY
对象(因为它们可以很容易地相互转换)。答案 0 :(得分:1)
public string ToCSharpType(Type type)
{
if (!type.IsGeneric)
return type.FullName;
var result = new StringBuilder();
string name = type.GetGenericTypeDefinition().FullName;
result.Append(name.Substring(0, name.IndexOf('`'));
result.Append('<');
var args = type.GetGenericArguments();
for (int i = 0; i < args.Length; i++)
{
result.Append(ToCSharpType(args[i]);
if (i < args.Length - 1)
result.Append(", ");
}
result.Append('>');
}