具有更多参数的 C# 子类方法中的 OOP 设计

OOP Design in C# subclass method with more parameters

假设我有这两个 类:

public class Threshold {
    int min;
    int max;

    public virtual int calculate(int min, int max)
    {
        //calculate basic Threshold        
    }        
}


public class AdvancedThreshold : Threshold {
    int min;
    int max;
    int extra;

    public override int calculate(int min, int max, int extra)
    {
        //calculate Advanced Threshold        
    }
}

我不能这样做,因为基类方法有两个参数,而子类方法有三个参数。

解决这个问题的最佳设计实践是什么?是否可以使用多态对象?我需要使用复合对象而不是继承吗?

我在这里读到了与我的问题类似的内容

但是我不太明白解决办法。谢谢你。

当您从 class 继承时,您无法更改为 methods.However 提供实现所需的方法,您可以添加新方法。

有几种方法可以达到你想要的效果

您为方法提供了两个重载

public virtual int calculate(int min, int max){}

public virtual int calculate(int min, int max,int extra){}

或者您可以根据另一个实施一个

public override int calculate(int min, int max)
{
   calculate(min,max,extra)
}

public  int calculate(int min, int max, int extra){}

不确定您要实现的目标,但您可能需要重新考虑设计。 min/max/extra 值似乎不应传递给 Calculate 方法,而应设置为属性或在构造函数中传递。

public class Threshold
{
    public int Min { get; set; }
    public int Max { get; set; }

    public virtual int Calculate( int input )
    {
        // logic goes here
    }
}

public class AdvancedThreshold : Threshold
{
    public int Extra { get; set; }

    public override int Calculate( int input )
    {
        // advanced logic goes here
    }
}