2017-07-26 71 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

謝謝,解析文本來做到這一點,這是一個更簡單的方法來獲得我想要執行的內容 –

相關問題