这个问题是尝试Jon Skeet对这个问题的回答的结果。
所以我有以下代码基于上述问题链接的问答。
public abstract class DeliveryStrategy { }
public class ParcelDelivery : DeliveryStrategy { }
public class ShippingContainer : DeliveryStrategy { }
public abstract class Order<TDelivery> where TDelivery : DeliveryStrategy
{
private TDelivery delivery;
protected Order(TDelivery delivery)
{
this.delivery = delivery;
}
public TDelivery Delivery
{
get { return delivery; }
set { delivery = value; }
}
}
public class CustomerOrder : Order<ParcelDelivery>
{
public CustomerOrder()
: base(new ParcelDelivery())
{ }
}
public class OverseasOrder : Order<ShippingContainer>
{
public OverseasOrder() : base(new ShippingContainer())
{
}
}
我正在尝试更多地了解泛型以提高我的技能,所以我有一个问题:现在我如何使用 foreach 来遍历“订单”的集合?我正在使用 C#2.0。
我正在尝试做的代码示例(不编译)。
List<Order> orders = new List<Order>();
orders.Add(new CustomerOrder());
orders.Add(new CustomerOrder());
orders.Add(new OverseasOrder());
orders.Add(new OverseasOrder());
foreach (Order order in orders)
{
order.Delivery.ToString();
}
编辑:添加 OverseasOrder 以提供更好的示例。