C# 继承与收藏

C# 继承与收藏,c#,inheritance,C#,Inheritance,我有继承问题。 我从类似的东西开始: public class POpt { ... private decimal profit; public decimal Profit { get { return profit; } } ... } public class Opt { ... private List<POpt> pases; public int NumPasesPositivos() {

我有继承问题。
我从类似的东西开始:

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();
    }
...     
}
而且:

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
{
...
...     
}
抽象公共类T
{
...
私有列表

pases; ... } 公共类选项:T { ... 公共int numpasePositives() { 返回pases.Where(o=>o.Profit>0.Count(); } ... } 公共类Bt:T { ... ... }

现在,T类中的列表可以是POpt或PBt类列表。现在的问题是,我不能使用NumpasePositives,因为PASS可以是POpt或PBt,而利润并没有在PBt中定义,我不能播放
pases in OPt to someting like(listpasses)。Where(o=>o.price>0)。Count()…我不知道如何解决问题,也不知道如何重写类…

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

public int NumPasesPositivos()
{
    return pases.OfType<POpt>().Where(o => o.Profit > 0).Count();
}
public int numpasepospositives()
{
返回pases.OfType()。其中(o=>o.Profit>0.Count();
}

旁注-使用带有谓词的
Count
重载:
返回pases.Count(o=>o.price>0)
public int NumPasesPositivos()
{
    return pases.OfType<POpt>().Where(o => o.Profit > 0).Count();
}