/// <summary> /// “+”的重载,用于创建复合费用 /// </summary> public static Cost operator +(Cost a, Cost b) { List <Cost> newElements = new List <Cost>(); if (a is MultipleCost) { if (b is MultipleCost) { newElements = ListUtils.Combine(((MultipleCost)a).Elements, ((MultipleCost)b).Elements); } else { newElements.AddRange(((MultipleCost)a).Elements); newElements.Add(b); } } else if (b is MultipleCost) { newElements.Add(a); newElements.AddRange(((MultipleCost)b).Elements); } else { newElements.Add(a); newElements.Add(b); } return(new MultipleCost(a.Reason, newElements.ToArray())); }
public static Message operator +(Message a, Message b) { if (a is EmptyMessage || a == null) { return(b); } else if (b is EmptyMessage || b == null) { return(a); } else { List <Message> newElements = new List <Message>(); if (a is MultipleMessage) { if (b is MultipleMessage) { newElements = ListUtils.Combine(((MultipleMessage)a).Elements, ((MultipleMessage)b).Elements); } else { newElements.AddRange(((MultipleMessage)a).Elements); newElements.Add(b); } } else if (b is MultipleMessage) { newElements.Add(a); newElements.AddRange(((MultipleMessage)b).Elements); } else { newElements.Add(a); newElements.Add(b); } return(new MultipleMessage(newElements.ToArray())); } }