You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Roslyn中如何将Accessibility枚举转换为对应的C#访问修饰符关键字

解决方案:Accessibility 枚举转 C# 访问修饰符实现

直接通过枚举值一一映射即可覆盖所有场景,无需手动拆分拼接修饰符,完整实现如下:

1. 扩展方法实现

using Microsoft.CodeAnalysis;

public static class AccessibilityExtension
{
    public static string ToCSharpAccessModifier(this Accessibility accessibility)
    {
        return accessibility switch
        {
            Accessibility.Public => "public",
            Accessibility.Private => "private",
            Accessibility.Protected => "protected",
            Accessibility.Internal => "internal",
            // 对应 protected internal 组合修饰符
            Accessibility.ProtectedOrInternal => "protected internal",
            // 对应 private protected 组合修饰符(C# 7.2+ 支持)
            Accessibility.ProtectedAndInternal => "private protected",
            // 无需显式声明访问修饰符的场景返回空
            Accessibility.NotApplicable => string.Empty,
            _ => string.Empty
        };
    }
}

2. 调用示例

// 假设 methodSymbol 为获取到的方法符号
string modifier = methodSymbol.DeclaredAccessibility.ToCSharpAccessModifier();
// 生成方法声明示例:$"{modifier} {returnType} {methodName}({parameters})"

3. 注意事项

  • Accessibility.ProtectedOrInternal和Accessibility.ProtectedAndInternal分别对应两种组合修饰符,直接映射即可,无需手动拼接
  • Accessibility.NotApplicable适用于接口成员、枚举成员这类默认有固定访问权限、无需显式声明修饰符的场景,返回空字符串可避免生成无效语法
  • 该实现覆盖了Roslyn API中Accessibility枚举的所有有效值,不存在遗漏场景

内容的提问来源于stack exchange,提问作者Shadow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:36:02