私がやろうとしていること:
roslyn を使用してコード リファクタリングを作成しています。私の目標は、カルスを切り開くことです。だから私がやっていることは、基本的に私はすべてのプライベートスタッフを削除し、非プライベートスタッフの体を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 設計がこのようなものである理由はありますか? それとも、何か不足していますか? これらおよび他の多くの同様のケースで重複を回避する方法はありますか?
更新 roslyn リポジトリに問題を作成しました: #10455