【发布时间】:2012-03-12 04:52:49
【问题描述】:
我不知道我问这个是否正确,但这就是我想做的:
型号
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"
}
如何将两个(或多个)列表编译为一个列表,然后从结果列表中获取原始(派生)类型?我想我已经使用 Concat() 工作了,但我真的很感谢专家在这方面的例子。
【问题讨论】:
标签: c# .net generics inheritance polymorphism