我们即将从头开始一个项目。根据设计讨论,我正在考虑提出这个主题。
大多数时候,我看到抽象类只是用来通过一些具体方法提供一些默认/常见行为。
因此,我考虑将这些具体方法定义为我将要开发的接口(interface)的扩展方法,以代替抽象类。
有人可以指导我的设计决策吗?如果您不同意我的观点,请用我们在这样做时可能面临的场景/问题来证明您的论点。因此,它将提高我的知识。
最佳答案
这两种方法非常不同。
使用抽象类并通过抽象/虚拟方法,您允许派生类重写扩展方法所不具备的行为。扩展方法归根到底是扩展,它们不是类型的一部分,并且当有人检查 API 和类型提供的功能时很难发现。
第二点,为您自己创建的类型创建扩展方法并不符合逻辑。使用抽象基类可以使您的层次结构保持清晰,并使您的模型对重写行为的修改保持开放。
关于c# - 我们可以用具有扩展方法的接口(interface)替换抽象类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38846108/