1

Sacha Barbers の無料の mvvm フレームワーク チンチで見つけたいくつかのコードから、これを見ました。

return new DispatcherNotifiedObservableCollection<OrderModel>(
                    DataAccess.DataService.FetchAllOrders(
                        CurrentCustomer.CustomerId.DataValue).ConvertAll(
                            new Converter<Order, OrderModel>(
                                  OrderModel.OrderToOrderModel)));

FetchAllOrdersList<Order>特定の customerID に対して a を返します。このリストはList<OrderModel>または に変換されますList<OrderViewModel>

どうすればそれが起こりますか?List<Order>の Order オブジェクトのすべてのプロパティが のプロパティに変換されるという要件/条件はOrderModel何ですか?

4

1 に答える 1

2

そのコードをもう少し読みやすくしましょう。

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);

そこで何が起こるの?

  1. このコードは、データ ストアからすべての注文を取得し、それらを List<T> に格納します。

  2. このコードは、1 つの Order から 1 つの OrderModel に変換する Converter<TInput, TOutput> 型のデリゲートを作成します。

  3. このコードは、各注文にコンバーターを適用することで、すべての注文を注文モデルに変換します。

  4. このコードは、変換された値のリストを含む DispatcherNotifiedObservableCollection<T> を返します。

それはどのように機能しますか?

基本的に、ここで ConvertAll が行うことは、これと同等です。

List<OrderModel> orderModels = new List<OrderModel>(orders.Count);
for (int i = 0; i < orders.Count; i++)
{
    orderModels[i] = OrderModel.OrderToOrderModel(orders[i]);
}

それはあなたの質問に答えていますか?

于 2010-05-09T22:48:29.773 に答える