部分方法是否有害?

Che*_*eso 3 c# class-design

在C#3.0中,Microsoft引入了对称为部分方法的支持.

你用它们吗?你能描述一下如何以及为什么?

您是否考虑使用部分方法进行良好的编程实践?

Shu*_*oUk 10

部分方法主要用于在运行时评估或不使用此类可扩展性的用户可见代码中扩展工具生成代码的行为而无需成本.

因此,它们的使用是明智的,并且在必要时予以鼓励,但对于大多数用户(他们没有编写生成代码的工具)来说,这种情况相对不常见.如果您正在编写这样的工具,那么应该考虑人们可以与您生成的代码流进行交互的位置,以及在实现预期的性能和可用性目标的同时,是否无法通过类似事件的机制轻松处理此类使用.事件本质上是多播的,并且这种结构可能固有地违背API的预期设计.或者,可能需要复杂的返回值或与ref/out参数的交互,最终扩展可能是复杂/易碎的,尽管它具有实用性,因此只有部分类实现者可以处于充分处理这一点的位置.所有这些原因都有其利基,如果不是常见的,部分方法可以有效地解决它们.

实现部分方法的消费者应该使用它们作为工具生成的代码指示(如果提供了扩展点并且您需要它,请使用它).为避免这样做,因为人们认为该功能令人困惑,因此语言和API使用不当,因为这显然是预期的扩展点.