Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Roslyn TypeDeclarationSyntax、MethodDeclarationSyntax、FieldDeclarationSyntax具有公共属性,但没有公共基类或接口_C#_.net_Roslyn_Roslyn Code Analysis - Fatal编程技术网

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

C# Roslyn TypeDeclarationSyntax、MethodDeclarationSyntax、FieldDeclarationSyntax具有公共属性,但没有公共基类或接口,c#,.net,roslyn,roslyn-code-analysis,C#,.net,Roslyn,Roslyn Code Analysis,我想做什么: 我正在使用roslyn编写代码重构。我的目标是雕刻出一块石头。因此,我所做的基本上是删除所有私人员工,并用抛出新的NotImplementedException()替换非私人员工团体 我的问题是什么: 一切都很好,但我最终得到了大量类似这样的代码复制: private static bool IsPrivate(TypeDeclarationSyntax type) { return type.Modifiers.Any(IsPrivateModif

我想做什么:

我正在使用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
,语法类没有通用的基类型或接口来声明
Members
。我对属性
Body
也有同样的问题,这对所有这些都是通用的,但是没有通用的基础或通用的接口

问题: API设计是这样的有什么原因吗,或者我遗漏了什么?在这些和许多其他类似的情况下,我如何避免重复


更新
在roslyn回购协议中产生了一个问题:

我希望他们能解决,但你可以

dynamic 

现在就开始吧。

我建议您在。已经有了。