此問題是由於嘗試Jon Skeet's回答this question。如何在使用泛型的基類上使用foreach?
所以我有以下代碼的基礎上述問題鏈接的問題和答案。
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給一個更好的例子。
只是出於好奇...你得到的編譯器錯誤是什麼? – 2009-06-03 14:34:53
使用泛型類型'WindowsApplication34.Order'需要'1'類型參數 –
Crispy
2009-06-03 14:43:39