/// <summary> /// Adds the line. /// </summary> /// <param name="line">The line.</param> public void AddLine(IOrderLine <IProduct> line) { ErrorBase.CheckArgIsNull(line, nameof(line), nameof(line).GetArgumentNullErrorMessage(nameof(AddLine))); //Hp --> Note: Here interface IOrderLine is covariant of type IProduct. //Which means user is allowed to add any concreate class object which impelements IProduct. lines.Add(line); }
/// <summary> /// Removes the line. /// </summary> /// <param name="line">The line.</param> public void RemoveLine(IOrderLine <IProduct> line) { ErrorBase.CheckArgIsNull(line, nameof(line), nameof(line).GetArgumentNullErrorMessage(nameof(RemoveLine))); var comparer = Utility.GetEqualityComparer <IOrderLine <IProduct> >(); if (lines.Contains(line, comparer)) { lines.RemoveAll(L => L.Id == line.Id); } }