Sha*_*dow 4 c# roslyn microsoft.codeanalysis
我想在代码生成器中实现接口,因此我需要转换Microsoft.CodeAnalysis.Accessibility(即从ISymbol.DeclaredAccessibility)到它们所表示的修饰符关键字。
该枚举在代码分析 API 中用于描述类或其成员的访问修饰符。
例如,如果你有public void MyMember()它的ISymbol.DeclaredAccessibility意志Accessibility.Public。我需要创建这样的方法声明,因此我需要一种转换Accessibility.Public为public等的方法(请注意, justToLower只适用于简单的情况,它不会生成protected internal)。
正确的做法是什么?
使用SyntaxFacts.GetText(Accessibility)方法:
string publicKeyword = SyntaxFacts.GetText(Accessibility.Public);
string accessibilityKeyword = SyntaxFacts.GetText(accessibility);
Run Code Online (Sandbox Code Playgroud)
命名空间:Microsoft.CodeAnalysis.CSharp
程序集:Microsoft.CodeAnalysis.CSharp.dll
程序包:Microsoft.CodeAnalysis.CSharp
可用时间: v3.0.0
[Theory]
[InlineData(Accessibility.NotApplicable, "")]
[InlineData(Accessibility.Private, "private")]
[InlineData(Accessibility.ProtectedAndInternal, "private protected")]
[InlineData(Accessibility.Protected, "protected")]
[InlineData(Accessibility.Internal, "internal")]
[InlineData(Accessibility.ProtectedOrInternal, "protected internal")]
[InlineData(Accessibility.Public, "public")]
public void Accessibility_To_ModifierKeyword(Accessibility accessibility, string expected)
{
string actual = SyntaxFacts.GetText(accessibility);
actual.Should().Be(expected);
}
Run Code Online (Sandbox Code Playgroud)