2
我不知道如果我問這個正確的方式,但這裏是我想做的事:合併多態列表到一個列表,並獲得派生類型
型號
public abstract class IncomingOrderBase
{
public string Summary { get; set; }
}
public class IncomingProductOrder : IncomingOrderBase
{
public Product Product { get; set; }
}
public class IncomingServiceOrder : IncomingOrderBase
{
public Service Service { get; set; }
}
public class Sale
{
public ICollection<IncomingProductOrder> ProductOrders { get; set; }
public ICollection<IncomingServiceOrder> ServiceOrders { get; set; }
public List<IncomingOrderBase> GetAllOrders()
{
var orders = this.ProductOrders +++PLUS+++ this.ServicesOrders;
return orders.ToList();
}
}
用法
foreach(var order in sale.GetAllOrders())
{
Console.WriteLine(order.GetType().Name);
//output = "ProductOrder" or "ServiceOrder" not "IncomingOrderBase"
}
如何編譯兩個(或更多)列出一個列表中,然後得到日原(衍生)型e結果列表?我想我使用Concat()
工作,但我真的很感激專家在這方面的例子。
我覺得第二個例子是很多清晰。除非有一些性能損失,否則我寧願將它與.NET 4一起使用。 – zmbq 2012-02-21 21:02:53