API 中使用自定义接口还是众所周知的标准接口更好?

问题描述 投票:0回答:0

我有一个简单的界面:

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

我的 API 的用户将被迫使用此接口,而不是他们通常知道的接口,例如

IList
IEnumerable
。我更喜欢这个而不是
IList
,因为它只公开可以使用的成员。我不希望所有未使用的垃圾污染我的 API。与
IsReadOnly
相比,我更喜欢这个,因为我的用户需要访问索引和计数。这是合理的推理,还是我应该使用更熟悉的
Add()
?为什么?
    
如果您的类型实际上不会实现 IList 的所有成员,那么这将是比实现 IList 更好的解决方案。  你可以实现 IList 并抛出 NotImplementedException 但这样你就违反了 Liskov。
    

.net standards api-design
© www.soinside.com 2019 - 2024. All rights reserved.