如何从子级获取值到父级。
我想总结price
花的总和,并把它作为整个花束的总和(coast
)
abstract class Bouquet
{
public List<Flower> _flowers = new List<Flower>();
public List<Flower> Flowers
{
get { return _flowers; }
private set { _flowers = value; }
}
public decimal Coast { get; set; }
public int Count { get; set; }
public Bouquet(int c)
{
this.Count = c;
for (int i=0;i< Count; i++){//
Coast = Flowers.Sum(flower => flower.price);
}
this.CreateBouquet();
}
//Factory method
public abstract void CreateBouquet();
}
class RosesStandard:Bouquet
{
public RosesStandard(int c) : base(c)
{
}
public override void CreateBouquet()
{
Flowers.Add(new Rose());
}
}`
Flower
看起来像:
public class Flower
{
public decimal price { get; set; }
}
///<summary>
/// concrete flower
/// </summary>
class Rose:Flower
{
public Rose()
{
price = 100;
}
}`
抱歉我的英语不好
答案 0 :(得分:0)
您的代码存在一些问题。主要是虽然我认为你让情况复杂化了。请参阅下面的摘要,可能会为您简化: _flowers应该是私人的而不是公开的。 你的Bouquet的构造函数会计算你计算成本的计数,但它显然是0,因为它还没有花。 这个.CreateBouquet应该被删除,但我不确定我理解为什么它在那里。但我确信它不会做你期望的事情。请参阅下文,了解这是否有助于您进一步了解。
abstract class Bouquet
{
private List<Flower> _flowers = new List<Flower>();
public List<Flower> Flowers
{
get { return _flowers; }
private set { _flowers = value; }
}
public decimal Cost { get { return _flowers.Sum(p => p.Price); } }
public int Count { get { return _flowers.Count(); } }
public Bouquet()
{
}
//Factory method
public abstract void CreateBouquet();
}