微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – Roslyn TypeDeclarationSyntax,MethodDeclarationSyntax,FieldDeclarationSyntax具有公共属性但没有公共基类或接口

我想做什么:

我正在使用roslyn编写代码重构.我的目标是开辟出一种优势.所以我正在做的基本上是我删除所有私人工作人员并用一个新的NotImplementedException()替换非私人工作人员的身体.

我的问题是什么:

一切正常,但我最终得到了很多代码重复,如下所示:

private static bool IsPrivate(TypeDeclarationSyntax type)
    {
        return type.Modifiers.Any(IsPrivateModifier);
    }

    private static bool IsPrivate(MethodDeclarationSyntax method)
    {
        return method.Modifiers.Any(IsPrivateModifier);
    }

    private static bool IsPrivate(FieldDeclarationSyntax field)
    {
        return field.Modifiers.Any(IsPrivateModifier);
    }

    private static bool IsPrivate(PropertyDeclarationSyntax property)
    {
        return property.Modifiers.Any(IsPrivateModifier);
    }

    private static bool IsPrivate(IndexerDeclarationSyntax property)
    {
        return property.Modifiers.Any(IsPrivateModifier);
    }

    private static bool IsPrivateModifier(SyntaxToken modifier)
    {
        return modifier.Kind() == SyntaxKind.PrivateKeyword;
    }

原因是我需要使用属性Members,并且没有公共基类型或接口用于声明成员的语法类.我对属性Body有同样的问题,这是所有这些共同的,没有共同的基础或公共接口.

问题:
有没有理由为什么API设计是这样的,或者我错过了什么?我是否有任何模式可以避免在这些和许多其他类似情况下重复.

更新
在roslyn repo:#10455中创建了一个问题

解决方法

我希望他们能解决这个问题,但你可以

dynamic

现在就在它身边.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐