2017-11-03 2 views
0

여기 닭고기/계란 문제가 있습니다. 일부 클래스를 생성하려면 SyntaxGenerator를 사용하고 있습니다. 이러한 클래스 중 일부는 유형이 다른 클래스에서 생성 된 유형 인 필드 및 속성을 갖습니다. 그래서 내 질문은 어떻게 생성 된 아직 생성되지 않은 다른 생성 된 클래스에 정의 된 형식을 가진 클래스의 필드를 선언 할 수 있습니다? 현재 생성 된 클래스가 먼저 의존하는 모든 클래스를 생성하고 컴파일해야합니까? 유형이 SyntaxFactory을 사용하여 존재 여부아직 생성되지 않은 유형에 대해 Roslyn TypeExpression을 생성하는 방법은 무엇입니까?

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

감사

답변

0

당신은, 당신이 좋아하는 모든 종류의 이름을 생성 할 수 있습니다.

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을 생성하기 위해 존재합니다.

관련 문제