2016-09-14 10 views
3

2つのNameSyntaxオブジェクトを1つのQualifiedNameオブジェクトに結合する簡単な方法はありますか?2つの修飾名を組み合わせる

SyntaxFactory.QualifiedNameメソッドが2番目の引数として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()); 

答えて

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(); 
} 
関連する問題