2015-06-06 4 views
7

मैं कुछ बहुत ही बुनियादी कोड-जेन करना चाहता हूं (सेवा के साथ संचार के लिए कुछ सी # कक्षाओं में एक सेवा एपीआई स्पेक परिवर्तित करना)। मुझे this question मिला है जो सुझाव देता है कि मैं Syntax.CompilationUnit() पर एक नया CompilationUnityntax बनाने के लिए कॉल कर सकता हूं, हालांकि मैं इस कोड को संकलित करने में असमर्थ हूं; मुझे लगता है मैं मिल सकता है सिंटेक्स वर्गों में से किसी पर एक CompilationUnit विधि नहीं मिल सकता है (और न ही मैं इस पर कोई भी दस्तावेज़ ढूँढ सकते हैं) :(स्क्रैच से रोज़लिन सिंटैक्स पेड़ कैसे बनाया जाए?

CSharpSyntaxTree.Create एक CSharpSyntaxNode आवश्यकता प्रतीत होता है, लेकिन मैं समझ नहीं बनाने का तरीका उनमें से एक या तो:।/

मैं वी.एस. 2015 आर सी उपयोग कर रहा हूँ नवीनतम Microsoft.CodeAnalysis NuGet पैकेज (1.0.0-rc2) के साथ

+1

यो आपके प्रश्न ने मुझे (नया?) roslyn एपीआई का संक्षिप्त अवलोकन देने के लिए प्रेरित किया। इसे यहां देखें: http://www.vannevel.net/2015/06/07/a-few-important-roslyn-api-helpers/ –

उत्तर

8

लगता है कि Syntax अब SyntaxFactory है:

var comp = SyntaxFactory.CompilationUnit() 
     .AddMembers(
      SyntaxFactory.NamespaceDeclaration(SyntaxFactory.IdentifierName("ACO")) 
        .AddMembers(
        SyntaxFactory.ClassDeclaration("MainForm") 
         .AddMembers(
          SyntaxFactory.PropertyDeclaration(SyntaxFactory.ParseTypeName("System.Windows.Forms.Timer"), "Ticker") 
            .AddAccessorListAccessors(
            SyntaxFactory.AccessorDeclaration(SyntaxKind.GetAccessorDeclaration).WithSemicolonToken(SyntaxFactory.Token(SyntaxKind.SemicolonToken)), 
            SyntaxFactory.AccessorDeclaration(SyntaxKind.SetAccessorDeclaration).WithSemicolonToken(SyntaxFactory.Token(SyntaxKind.SemicolonToken))), 
          SyntaxFactory.MethodDeclaration(SyntaxFactory.ParseTypeName("void"), "Main") 
            .AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword)) 
            .WithBody(SyntaxFactory.Block()) 
          ) 
        ) 
      ); 
संबंधित मुद्दे