加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Roslyn TypeDeclarationSyntax,MethodDeclarationSyntax,F

发布时间:2020-12-15 20:59:08 所属栏目:百科 来源:网络整理
导读:我想做什么: 我正在使用roslyn编写代码重构.我的目标是开辟出一种优势.所以我正在做的基本上是我删除所有私人工作人员并用一个新的NotImplementedException()替换非私人工作人员的身体. 我的问题是什么: 一切正常,但我最终得到了很多代码重复,如下所示: p
我想做什么:

我正在使用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

现在就在它身边.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读