Лямбда-выражение и InvokeOperation - PullRequest
1 голос
/ 02 апреля 2012

У меня есть этот код, и я не могу понять, как его можно упростить с помощью лямбда-выражения?

public void LoadEntities(QueryBuilder<Device> query, Action<ServiceLoadResult<Device>> callback, object state)
{
    InvokeOperation<List<DivisionHierarchy>> obj = this.Context.GetAllDivisions();

    obj.Completed += new EventHandler(obj_Completed);   
}

void obj_Completed(object sender, EventArgs e)
{
    try
    {
        if (sender is InvokeOperation<List<DivisionHierarchy>>)
        {
            ObservableCollection<DivisionHierarchy> divisions = 
                new ObservableCollection<DivisionHierarchy>((sender as InvokeOperation<List<DivisionHierarchy>>).Value);
        }
    }
    catch  
    {                 
    }
} 

Ответы [ 2 ]

6 голосов
/ 02 апреля 2012

Ваш вопрос слишком широкий, поэтому я угадываю здесь, но единственное место для лямбда-выражений здесь - при подключении к событию.Поэтому вместо отдельного метода obj_Completed вы можете сделать это:

    public void LoadEntities(QueryBuilder<Device> query, Action<ServiceLoadResult<Device>> callback, object state)
    {
        InvokeOperation<List<DivisionHierarchy>> obj = this.Context.GetAllDivisions();

        obj.Completed += (sender, e) =>
        {
           try
           {
               if (sender is InvokeOperation<List<DivisionHierarchy>>)
               {
                   ObservableCollection<DivisionHierarchy> divisions = 
                       new ObservableCollection<DivisionHierarchy>((sender as InvokeOperation<List<DivisionHierarchy>>).Value);

               }
           }
           catch  
           {                 
           }
       } 
     }
0 голосов
/ 02 апреля 2012

Итак, окончательное решение здесь

    public void LoadEntities(QueryBuilder<Device> query, Action<ServiceLoadResult<Device>> callback, object state)
    {

    ((InvokeOperation<List<DivisionHierarchy>>)this.Context.GetAllDivisions()).Completed += (sender, e) =>
        {
             try
             {
                 if (sender is InvokeOperation<List<DivisionHierarchy>>)
                 {
                     ObservableCollection<DivisionHierarchy> divisions =
                         new ObservableCollection<DivisionHierarchy>((sender as InvokeOperation<List<DivisionHierarchy>>).Value);
                  }
              }
              catch
              {
              }
         };         
}
...