2017-07-26 69 views
1

我正在创建一个代码生成器。为了简化我遇到的问题,我如何使用多个声明修饰符生成一个类?Roslyn如何使用多个声明修饰符创建类

类发生器只添加一个宣言修改

this._syntaxGenerator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp); 
var classNode = this._syntaxGenerator.ClassDeclaration(classOptions.Name, null, 
         classOptions.InternalAccessModifier, DeclarationModifiers.Sealed) 
        .NormalizeWhitespace(); 

构造说我想创造一个密封的局部类或某事有多个宣言修饰符我该怎么办呢?

+0

只要尝试使用一些现有的修饰符并使用'WithIs **'重新创建一个新的。它看起来像这样'var modifiers = DeclarationModifiers.Sealed.WithIsAbstract(true).WithIsStatic(true); '。之后,你只需要将它传递给'SyntaxGenerator.ClassDeclaration' –

+0

啊,好吧,我希望能够传递数组,l因为我从文本解析它,我想我必须将所有东西都转换为代替列表。如果您将其作为回答发布,我会将其标记为正确 –

+0

'DeclarationsModifiers'覆盖操作符,因此您可以使用'Expression'通过文本对修饰符进行求和。但我不确定它会更清楚。 –

回答

1

只要尝试使用一些现有的修改器并使用WithIs**重新创建一个新的。它看起来像这样:

var modifiers = DeclarationModifiers.Sealed.WithIsAbstract(true).WithIsStatic(true); 

之后,你只需要将它传递到SyntaxGenerator.ClassDeclaration

1

你可以用“|”运营商合并申报修改:

DeclarationModifiers.Sealed |声明修改器。抽象

就像旗帜枚举。

+0

谢谢,解析文本来做到这一点,这是一个更简单的方法来获得我想要执行的内容 –

相关问题