0

私はシンプルなインターフェースを持っています:

public interface IReadOnlyList<T> : IEnumerable<T>
{
    T this[int index] { get; }
    int Count { get; }
}

私のAPIのユーザーは、彼らが一般的に知っているインターフェースではなく、このインターフェースを使用することを余儀なくされIListますIEnumerableIList使用できるメンバーしか公開されていないので、これよりも好きです。IsReadOnly Add() Remove() Insert()未使用のジャンクがAPIを汚染することは望ましくありません。IEnumerableまた、ユーザーがインデックスとカウントにアクセスする必要があるため、これを優先します。これは正しい推論ですか、それとももっと身近なものを使用する必要がありIListますか?なんで?

4

1 に答える 1

1

IListの場合、タイプが実際にすべてのメンバーを実装しない場合は、IListを実装するよりも優れたソリューションになります。IListを実装してNotImplementedExceptionをスローすることはできますが、そうするとLiskovに違反することになります。

于 2012-08-07T22:07:04.530 に答える