Reputation: 2591
Is there an easy way to combine two NameSyntax objects into one QualifiedName object?
The following code is not working, because the SyntaxFactory.QualifiedName method is expecting a SimpleNameSyntax object as second argument.
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);
This could be a solution, but I have the feeling that there must be a better way, without the ToString and parse:
NameSyntax combined = SyntaxFactory.ParseName(part1.ToString() + "." + part2.ToString());
Upvotes: 3
Views: 254
Reputation: 6420
I don't think you'll find any API methods for this. But you can try the following
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();
}
Upvotes: 2