gpt4 book ai didi

c# - 扩展类的问题和用方法覆盖

转载 作者:行者123 更新时间:2023-11-30 17:22:02 26 4
gpt4 key购买 nike

我有一个用 C# 编写的 .net 网站,并将提供其他开发人员可以使用的功能。所以我会做一些默认实现,开发人员可以覆盖一些方法

例子:我有一个类 ShoppingCart 和一个类 Product 类产品有一个方法 getProductPrice购物车会调用方法getProductPrice来计算购物车的总价

ShoppingCartProduct 在同一个项目中,我会为开发人员提供 .dll,这样他们就无法更改源代码,因此我们可以更新程序集稍后

所以他们需要创建另一个项目并扩展产品类并覆盖方法 getProductPrice 以便他们可以实现自己的逻辑问题是购物车不会调用扩展方法而是调用原始方法

如果我们已经为开发人员创建了一个扩展项目,并且购物车将调用扩展方法,那么我们就有了一个循环引用因为扩展产品需要对产品的引用和对扩展产品的购物车

部分类也不起作用,因为我们只能在同一个程序集中使用部分类

有人有什么建议吗?

提前致谢。

最佳答案

您应该将所有 Product 方法标记为 virtual :

public virtual decimal GetProductPrice() { };

那么后面接手的开发者可以继承产品重写方法:

public class OverriddenProduct : Product
{
public override decimal GetProductPrice() { }
}

因为 OverridenProduct(在我上面的示例中)继承自 Product,它仍然可以添加到您的 中的 Product 集合中ShoppingCart 类。

我猜只是语法,但 ShoppingCart 类的方法可能应该是 GetTotalPrice() 而不是 GetProductPrice() 因为我假设你得到的总成本购物车中的产品。

关于c# - 扩展类的问题和用方法覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3005579/

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