c# - 在 Roslyn 中将 DeclaredAccessibility 转换为 C# 字符串
问题描述
我想在我的代码生成器中实现接口,所以我需要将Microsoft.CodeAnalysis.Accessibility
(即 from ISymbol.DeclaredAccessibility
)转换为它们表示的修饰符关键字。
此枚举用于代码分析 API 中,用于描述类或其成员的访问修饰符。
例如,如果你有public void MyMember()
它的ISymbol.DeclaredAccessibility
意志Accessibility.Public
。我需要创建这样一个方法声明,因此我需要一种转换Accessibility.Public
为的方法public
等等(请注意,ToLower
这只适用于简单的情况,它不会生成protected internal
)。
正确的方法是什么?
解决方案
使用SyntaxFacts.GetText(Accessibility)方法:
string publicKeyword = SyntaxFacts.GetText(Accessibility.Public);
string accessibilityKeyword = SyntaxFacts.GetText(accessibility);
命名空间: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);
}
推荐阅读
- php - 如何仅在 Android 和 PHP 之间发出请求
- javascript - 如何在元素中添加元素?(ES6)
- javascript - Angularjs:将 JSON 对象转换为键、值对
- python - 在字典中计算大写或非大写
- python - 如何遍历 json 文件并将其作为 Django 中的 HttpRespones 返回?
- javascript - 无法显示属于数组的图像
- ruby-on-rails - Rails 6.1 将不加修改地返回 Content-Type 标头...改用 `#media_type`
- reactjs - 如何在“initialRouteName”抽屉React Native中添加if条件
- swiftui - 在 SwiftUI 中从 UIKit 更新 UIViewRepresentable 大小
- hadoop - WARN util.NativeCodeLoader:无法在 clodera-quickstart-vm 中加载 native-hadoop 库