继承和 Collections

Inheritance and Collections

我有继承问题。
我从类似于以下内容开始:

public class POpt
{
...
    private decimal profit;
    public decimal Profit
    {
        get { return profit; }
    }
...
}

public class Opt
{
...
    private List<POpt> pases;

    public int NumPasesPositivos()
    {
        return pases.Where(o => o.Profit > 0).Count();
    }
...     
}

它有效..我可以调用 NumPasesPositivos() 并获得列表 pases 中具有正利润的 pases 的数量。

现在,我必须编写两个类似的 classes,例如 Popt 和 Opt...并使用继承:

abstract public class P
{
...
...
}

public class POpt: P
{
...
    private decimal profit;
    public decimal Profit
    {
        get { return profit; }
    }
...
}

public class PBt: P
{
...
...
}

还有:

abstract public class T
{
...
    private List<P> pases;
...     
}

public class Opt: T
{
...
    public int NumPasesPositivos()
    {
        return pases.Where(o => o.Profit > 0).Count();
    }
...     
}

public class Bt:T
{
...
...     
}

现在,class T 阶段中的列表可以是 POpt 或 PBt 类列表。问题是现在,我不能使用 NumPasesPositivos,因为 pases 可以是 POpt 或 PBt,而 Profit 在 PBt 中没有定义,我不能投射
将 OPt 传递到类似 (Listpases).Where(o => o.Profit > 0).Count() ....我不确定如何解决问题也不知道如何重写 classes...

您可以使用 OfType 扩展方法并限制为可以转换为 POpt 的类型。

public int NumPasesPositivos()
{
    return pases.OfType<POpt>().Where(o => o.Profit > 0).Count();
}