编程语言
首页 > 编程语言> > c# – 如何决定api签名

c# – 如何决定api签名

作者:互联网

很多时候,在编写接受可枚举类型的函数时,我会遇到这种混乱.从以下选项中,哪种api暴露会更好:

public void Resolve(Func<bool>[] howtos)

public void Resolve(IEnumerable<Func<bool>> howtos)

public void Resolve(List<Func<bool>> howtos)

我通常根据以下内容做出决定:
如果需要通过添加或删除项来修改输入,则使用List,否则使用IEnumerable.不确定Array选项.

在决定暴露api时是否还需要考虑其他问题?是否有任何经验法则可以清楚地确定哪种情况应优先于另一种情况?

谢谢

解决方法:

您应始终接受限制最少的参数类型.

这意味着IEnumerable< T>,ICollection< T>或IList< T>.
这样,客户端可以自由地传递任何类型的实现,例如数组,HashSet< T>或ReadOnlyCollection< T>.

具体来说,你应该采用IEnumerable< T>如果您只需要迭代数据,ICollection< T>如果您还想添加或删除项目,或者您需要知道大小,则IList< T>如果你需要随机访问(索引器).

标签:c,net,class-design,api
来源: https://codeday.me/bug/20190614/1237921.html