【发布时间】:2012-02-01 10:04:57
【问题描述】:
【问题讨论】:
标签: c# extension-methods class-library
【问题讨论】:
标签: c# extension-methods class-library
顾名思义,扩展方法扩展了目标类型的功能或可用性。
正确使用扩展方法可以消除实际类型定义/实现中的正交混乱(而不是在类型定义中关注类型的核心功能)。
以 LINQ 为例 - 通过为IEnumerable 提供扩展方法,它可以针对大量已发布的类型(以及未来可能编写的大量类型);它分离了正交关注点,例如从实际类型中查询类型。
【讨论】:
IEnumerable<T> - 如果接口不能被扩展方法作为目标,那么一些主体将不得不为所有这些方法以特定类型(或它们的公共基类型)编写实现。
IEnumerable 的上下文中使用了术语“正交关注点,例如从实际类型中查询类型” - 它仅表示不同的集合,例如字典,列表、queue、set、stack等不必为各种查询方法(join、count、first、last等)提供实现。这个逻辑真的不是这些类的核心关注点。
记录的扩展方法在IEnumerable<T> 上定义,ObjectSet<T> 实现了这些方法。
它们已记录在案,因此您知道可以使用它们。
作为扩展方法,它们最终会免费扩展实现此接口的任何类型。
【讨论】:
请注意,这些方法中的许多都在接口上运行,这是使用扩展方法的一个完全正当的借口,即使对于微软来说也是如此,因为接口本身不能有任何方法的实现。
【讨论】:
我认为这很可能是“营销问题”。建议BCL消费者(我们)在我们需要的地方使用扩展方法的方法。
从可用性的角度来看,没有任何好处,imo,将它们集成到 BCL
【讨论】: