如何从儿童班获得价值

时间:2016-06-07 17:19:33

标签: c#

如何从子级获取值到父级。 我想总结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;
    }
}`
抱歉我的英语不好

1 个答案:

答案 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();
    }