组合两个限定名称
本文关键字:两个 定名称 组合 | 更新日期: 2023-09-27 18:07:07
是否有一种简单的方法将两个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());
我不认为你会找到任何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();
}