我有一个继承问题。
我从类似以下内容开始:
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()并在List语句中获取具有正利润的语句数。
现在,我必须编写两个类似的类,如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
{
...
...
}
现在,类别T类别中的列表可以是POpt或PBt类别列表。现在的问题是,我不能使用NumPasesPositivos,因为Pases可以是POpt或PBt,Profit在PBt中未定义,因此我不能进行转换
在OPt中出现类似(List pases)的东西。where(o => o.Profit> 0).Count()....我不确定如何解决问题或如何重写类...
最佳答案
您可以使用OfType扩展方法并将其限制为可以强制转换为POpt
的类型。
public int NumPasesPositivos()
{
return pases.OfType<POpt>().Where(o => o.Profit > 0).Count();
}