Лямбда-выражение в пользовательском классе - PullRequest
0 голосов
/ 26 ноября 2011

Я не могу использовать этот код, потому что Member не доступен в пользовательском интерфейсе.

public MemberViewModel GetSingle(Expression<Func<Member ,bool>> whereCondition ) 
{ 
    var member = this.MemberRepository.GetSingle( whereCondition ); 
    if (member != null) 
   { 
       return new MemberViewModel( member ); 
       // or however you map from member to its view model 
    } 
     return null; 
}

Как будет выглядеть пользовательский класс для замены выражения?Это будет течь так ...

 public MemberViewModel GetSingle(CustomClass where) 
{ 
  // Create customExp of type Expression<Func<DAL.EntityModels.Category, 
  // bool>> out of CustomObject
  // _categoryRepository.GetSingle(customExp);
  // Convert the resulting dataobject to corresponding view object
  // return the view object
}

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 26 ноября 2011

Не могли бы вы использовать что-то похожее на это, а затем вызвать его откуда-нибудь, у которого есть доступ как к T (Member), так и к TViewModel (MemberViewModel)?

    public static TViewModel GetSingle<T, TViewModel, TRepository>(Expression<Func<T, bool>> whereCondition, TRepository repository)
        where T : class, Entity
        where TViewModel : class, IViewModel<T>, new()
        where TRepository : IRepository<T>
    {
        T member = repository.GetSingle(whereCondition);
        if (member != null)
        {
            return new TViewModel().MapFrom(member);
            // or however you map from member to its view model 
        }
        return null;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...