なし共通の基底クラスまたはインタフェースを持っている:ロスリン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;
}
理由は、私はプロパティを使用する必要があるということですMembers
Members
を宣言する共通の基本タイプまたは構文クラスのインターフェースはありません。私はこれらすべてに共通のプロパティBody
と同じ問題を抱えています。共通のベースまたは共通のインタフェースはありません。
質問: APIデザインがこのような理由があるのですか、何か不足していますか?これらと他の多くの同様のケースで重複を避ける方法はありますか?
更新 はロザリンレポでの問題作成:#10455
[Roslyn repo](https://github.com/dotnet/roslyn/issues)でリクエストすることをお勧めします。すでに[Identifier'(https://github.com/dotnet/roslyn/issues/9908)にも同様の問題があります。 – svick