1. ホーム
  2. .net

[解決済み] あるインタフェースは別のインタフェースを継承すべきか

2023-06-09 16:25:08

質問

この件に関する回答が見つからないので、コーディング規約が正しいかどうか確認したいのです。 私はインターフェイス A がありますが、これは多くの異なるクラスによって使用され、 インターフェース A を変更する必要があります。 私は、Interface を実装する多くのクラスで必要とされる enum を必要とする新しい要件に出くわしました。 A しかし、すべてのクラスがこの列挙型を必要とするわけではありません。 しかし、すべてのクラスがこの列挙型を必要とするわけではありません。この新しい列挙型を必要としないクラスには、この新しい機能を実装して欲しくありません。 そこで、私はインターフェイス B を作成し、その中に追加する必要がある新しい列挙型を組み込みました。 そして、インターフェイス B を継承した A そして、これが私の関心事です。あるインターフェースが別のインターフェースを継承するのは良いことなのでしょうか? 変更を続けるために、私は新しい列挙型を必要とするクラスをインターフェイスを実装するために変更しました B の代わりにインターフェイス A に継承されたので B . 私はそれらを必要とするクラスで両方のインターフェイスを実装することを考えましたが、私はコード全体でインターフェイスを使用しており、2つではなく、クラスを調べるために1つのインターフェイスを使用したいと思います。

これが十分に明確であったことを望みます(おそらく長すぎます)が、もし誰かがこれについて私にいくつかのアドバイスを与えることができれば、私が正しくやっているか、私が間違っているか、教えてください。

ありがとうございます。

どのように解決するのですか?

インターフェース継承は優れたツールですが、インターフェースBがインターフェースAを本当に代替できる場合にのみ使うべきで、単に緩く関連した動作を集約するために使うべきではありません。

あなたの特定のケースに適切かどうかを判断するのは難しいですが、原則的にこの方法を使うことに問題はありません。一流のAPIでは、常にそれを目にします。1 つの一般的な例を挙げると、.NET フレームワークからです。

public interface ICollection<T> : IEnumerable<T>, IEnumerable