2016-04-08 5 views
4

なし共通の基底クラスまたはインタフェースを持っている:ロスリンTypeDeclarationSyntax、MethodDeclarationSyntax、FieldDeclarationSyntaxは私がやろうとしていますどのような共通の特性が、

私はロズリンを使用してリファクタリング、コードを書いています。私の目標は、犬を刻むことです。私がやっていることは、基本的に私はすべての私的なスタッフを削除し、非私的なスタッフの体をthrow new 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; 
    } 

理由は、私はプロパティを使用する必要があるということですMembersMembersを宣言する共通の基本タイプまたは構文クラスのインターフェースはありません。私はこれらすべてに共通のプロパティBodyと同じ問題を抱えています。共通のベースまたは共通のインタフェースはありません。

質問: APIデザインがこのような理由があるのですか、何か不足していますか?これらと他の多くの同様のケースで重複を避ける方法はありますか?


更新 はロザリンレポでの問題作成:#10455

+1

[Roslyn repo](https://github.com/dotnet/roslyn/issues)でリクエストすることをお勧めします。すでに[Identifier'(https://github.com/dotnet/roslyn/issues/9908)にも同様の問題があります。 – svick

答えて

0

を、私は今のところ、彼らはそれを修正願っていますが、その周りのことができます

dynamic 

関連する問題