gpt4 book ai didi

c#-3.0 - 在 C# 中的接口(interface)上具有扩展方法的伪多重继承?

转载 作者:行者123 更新时间:2023-12-04 15:16:40 24 4
gpt4 key购买 nike

Similar question but not quite the same thing

我在想,使用与接口(interface)相同命名空间中的扩展方法,您可以获得与多重继承类似的效果,因为您不需要在 10 个不同的类中以相同的方式实现相同接口(interface)的重复代码。

这样做有什么缺点?我认为优点很明显,缺点通常会在以后回来咬你。

我看到的一个缺点是扩展方法不能是虚拟的,因此您需要确保您确实希望它们对每个实例都以相同的方式实现。

最佳答案

我看到通过扩展方法构建接口(interface)功能的问题是您不再实际实现接口(interface),因此不能将对象用作接口(interface)类型。

假设我有一个采用 IBar 类型对象的方法。如果我通过扩展方法在类 Foo 上实现 IBar 接口(interface),那么 Foo 不会从 IBar 派生并且不能与它互换使用(Liskov Substitution 原则)。当然,我得到了我想要添加到 Foo 的行为,但是我首先失去了创建接口(interface)的最重要的方面——能够定义一个可以由各种类以各种方式实现的抽象契约,以便依赖类不需要知 Prop 体的实现。

如果我非常需要多重继承(到目前为止我没有它),我想我会使用组合来最大程度地减少代码重复的数量。

关于c#-3.0 - 在 C# 中的接口(interface)上具有扩展方法的伪多重继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/929820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com