2017-11-03 7 views
0

私はここに鶏卵問題があります。私はいくつかのクラスを生成するためにSyntaxGeneratorを使用しています。これらのクラスの中には、他のクラスで生成された型であるフィールドとプロパティを持つものがあります。だから私の質問は、まだ生成されていない別の生成クラスで定義された型を持つクラスのフィールドを宣言することができますか?現在生成されているクラスが最初に依存するすべてのクラスを生成してコンパイルする必要がありますか?まだ生成されていないタイプのRoslyn TypeExpressionを生成するにはどうすればよいですか?

foreach (var attribute in datatype.Attributes) 
    { 
     var fieldName = $"_{MessageNode.FormatResourceName(attribute.Name)}"; 
     var fieldNode = Generator.FieldDeclaration(fieldName, Generator.TypeExpression(**???**), Accessibility.Private); 
    } 

おかげ

答えて

0

あなたはSyntaxFactoryを使用して、タイプが存在するかどうか、あなたが好きなタイプ名を生成することができます。

using Microsoft.CodeAnalysis.CSharp; 
using Microsoft.CodeAnalysis.Simplification; 

var name = SyntaxFactory 
    .ParseTypeName("My.Generated.Type") 
    .WithAdditionalAnnotations(Simplifier.Annotation); 

また、単純な名前のために、あなたがSyntaxFactory.GenericNameを使用することができ、一般的な名前のために、SyntaxFactory.IdentifierNameを使用することができます。同等のAPIは、Visual Basicを生成するためにも存在します。

関連する問題