[C#] なぜインターフェースが別のインターフェースを実装するのですか?


Answers

少なくとも冗長性は減少します。

public interface INamedObject { string Name { get; } }
public interface IValuedObject<T> { T Value { get; } }
public interface INamedValuedObject<T> : INamedObject, IValuedObject<T> { }

より良いデザインです:

public interface INamedObject { string Name { get; } }
public interface IValuedObject<T> { T Value { get; } }
public interface INamedValuedObject<T> {
   string Name { get; }
   T Value { get; }
}

また、後者の場合、 INamedValuedObject<T>INamedObjectでもIValuedObject<T>でもないことにIValuedObject<T>

前者の場合は、「 INamedValuedObject<T>INamedObjectIValuedObject<T>であり、以下の要素も持っているもの」と読むことができます。

Question

List<T>宣言を見て、 IList<T>ICollection<T>IEnumerable<T>実装していることが分かりました。

次に、 IList<T>定義を見て、 ICollection<T>IEnumerable<T>実装していることがICollection<T>

「契約」と同じように機能し、 実際のコードを書いていない場合、別のインターフェースを実装するインターフェースのポイントは何ですか?

この実装は累積ですか? そうであれば、 IList<T>ICollection<T>IEnumerable<T>実装しているので、 List<T>IList<T>だけを実装すべきではありませんか?

申し訳ありませんが、私の質問が混乱している場合、私は今、困っています。




Links