Roslyn如何使用多个声明修饰符创建一个类

时间:2017-07-26 18:09:32

标签: c# code-generation roslyn

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

类Generator只有一个构造函数,用于添加单个声明修饰符

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

说我想创建一个密封的部分类或具有多个声明修饰符的东西我该怎么做?

2 个答案:

答案 0 :(得分:1)

尝试使用一些现有修饰符并使用WithIs**重新创建新修饰符。它看起来像这样:

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

之后,您只需将其传递到SyntaxGenerator.ClassDeclaration

答案 1 :(得分:1)

你可以使用'|'运算符组合声明修饰符:

DeclarationModifiers.Sealed | DeclarationModifiers.Abstract

与旗帜枚举一样。