из некоторого кода я нашел в Парикмахерах Sacha свободного mvvm клопа платформы, я видел это:
return new DispatcherNotifiedObservableCollection<OrderModel>(
DataAccess.DataService.FetchAllOrders(
CurrentCustomer.CustomerId.DataValue).ConvertAll(
new Converter<Order, OrderModel>(
OrderModel.OrderToOrderModel)));
FetchAllOrders
возвраты a List<Order>
для определенного customerID. Этот список преобразовывается в a List<OrderModel>
или другими словами List<OrderViewModel>
.
Как это может произойти? Каковы должны быть требования/условия, что каждое свойство Порядка возражает в List<Order>
преобразовывается в свойство OrderModel
?
Давайте сделаем этот код более читаемым:
List<Order> orders =
DataAccess.DataService.FetchAllOrders(CurrentCustomer.CustomerId.DataValue);
Converter<Order, OrderModel> converter =
new Converter<Order, OrderModel>(OrderModel.OrderToOrderModel);
List<OrderModel> orderModels = orders.ConvertAll(converter);
return new DispatcherNotifiedObservableCollection<OrderModel>(orderModels);
Что здесь происходит?
Код извлекает все заказы из хранилища данных и сохраняет их в List
Код создает делегат типа Converter
Код преобразует все заказы в модели заказов, применяя преобразователь к каждому заказу.
Код возвращает DispatcherNotifiedObservableCollection
Как это работает?
По сути, то, что здесь делает ConvertAll, эквивалентно следующему:
List<OrderModel> orderModels = new List<OrderModel>(orders.Count);
for (int i = 0; i < orders.Count; i++)
{
orderModels[i] = OrderModel.OrderToOrderModel(orders[i]);
}
Это ответ на ваш вопрос?