是否有一种简单的方法可以将两个NameSyntax对象合并为一个QualifiedName对象?
以下代码无效,因为SyntaxFactory.QualifiedName方法期望将SimpleNameSyntax对象作为第二个参数。
NameSyntax part1 = SyntaxFactory.QualifiedName(SyntaxFactory.IdentifierName("Part1"), SyntaxFactory.IdentifierName("Part2"));
NameSyntax part2 = SyntaxFactory.QualifiedName(SyntaxFactory.IdentifierName("Part3"), SyntaxFactory.IdentifierName("Part4"));
QualifiedNameSyntax combined = SyntaxFactory.QualifiedName(part1, part2);
这可能是一个解决方案,但我觉得必须有一个更好的方法,没有ToString和解析:
NameSyntax combined = SyntaxFactory.ParseName(part1.ToString() + "." + part2.ToString());
答案 0 :(得分:2)
我不认为你会找到任何API方法。但您可以尝试以下
public QualifiedNameSyntax Combine(NameSyntax left, NameSyntax right)
{
var qn = right as QualifiedNameSyntax;
if (qn != null)
{
return SyntaxFactory.QualifiedName(Combine(left, qn.Left), qn.Right);
}
var sn = right as SimpleNameSyntax;
if (sn != null)
{
return SyntaxFactory.QualifiedName(left, sn);
}
throw new NotSupportedException();
}