2012-08-07 59 views
0

我有一個簡單的界面:在API中使用自定義接口或衆所周知的標準接口會更好嗎?

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

我的API的用戶將被強制使用這個接口,而不是那些他們通常知道像IListIEnumerable。我比IList更喜歡這個,因爲它只暴露可以使用的成員。我不想要所有的那些IsReadOnlyAdd()Remove()Insert()未使用的垃圾污染我的API。我更喜歡IEnumerable,因爲我的用戶需要訪問索引和計數。這是合理的推理,還是我應該使用更爲熟悉的IList?爲什麼?

+0

由於它實現IEnumerable用戶不會被迫不使用IEnumerable。 – Paparazzi 2012-08-07 22:17:54

回答

1

如果你的類型實際上並沒有實現IList的所有成員,那麼這將比實現IList更好。你可以實現IList並拋出NotImplementedException,但是你會違反Liskov。