Order<T>
- абстракция времени компиляции.
Order
будет абстракцией времени выполнения, но в вопросе нет Order
.
Так как Order
нет, List<Order>
нет. Существуют такие коллекции:
List<Order<ParcelDelivery>>
List<CustomerOrder>
List<Order<ShippingContainer>>
List<OverseasOrder>
ArrayList
Предположим, у вас есть эта коллекция:
ArrayList myOrders = GetOrders();
Затем вы можете выполнить итерацию по коллекции и получить экземпляры CustomerOrder следующим образом:
foreach(object someThing in myOrders)
{
CustomerOrder myOrder = someThing as CustomerOrder;
if (myOrder != null)
{
//work with myOrder
}
}
Таким же образом, если у вас есть List<Order<ShippingContainer>>
, вы можете получить из него экземпляры OverseasOrder.
В .Net Framework 2.0 этот метод работает с абстракциями во время выполнения.
В .Net Framework 3.5 вместо фильтрации можно было бы вызвать Enumerable.OfType<T>
.