Использование лямбда-выражений для вызова метода - PullRequest
0 голосов
/ 16 февраля 2011

Смотрите, у меня есть этот пример кода

_service.GetCustomers((customers, error) =>
          {
             if (error != null)
             {                     
                MessageBox.Show(error.Message);
                return;
             }

             Customers = new ObservableCollection<CustomerViewModel>(customers);
             IsBusy = false;
          });

Если бы я должен был сделать аналогичный вызов функции для другой функции, которая принимает больше параметров, как это было бы.Определение функции выглядит следующим образом:

GetCustomers(DateTime sTime, int ID,  Action<IEnumerable<CustomerViewModel>, Exception> callback)

Так как бы вызвать вышеуказанную функцию, используя лямбда-выражение?

Ответы [ 3 ]

2 голосов
/ 16 февраля 2011

Просто передайте свой анонимный делегат, как и прежде, вместе с другими параметрами.

_service.GetCustomers(datetime, id, (customers, error) => {

                    if (error != null)
                    {                     
                        MessageBox.Show(error.Message);
                        return;
                    }

                    Customers = new ObservableCollection<CustomerViewModel>(customers);
                    IsBusy = false;

               });
2 голосов
/ 16 февраля 2011

Лямбда-выражение является сокращением для анонимного делегата, который был представлен в C # 2.0. Действие , а его братья и сестры являются общими делегатами.Всякий раз, когда вы видите параметр типа Action , вы можете заменить его на лямбду, принимающую эквивалентные параметры.В этом случае это будет

service.GetCustomers(sometime, someId, (viewmodels, exception)=>{/*handle callback here*/});
2 голосов
/ 16 февраля 2011
_service.GetCustomers(datetime, id, (customers, error) => .....
... same as before
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...