Проект ASP.NET, над которым я работаю, имеет 3 слоя; UI, BLL и DAL. Я хотел знать, было ли приемлемо, чтобы пользовательский интерфейс передавал лямбда-выражение BLL, или если пользовательский интерфейс должен передавать параметры, а метод службы должен использовать эти параметры для создания выражения лямбда? Вот пример класса, показывающий оба сенария.
public class JobService
{
IRepository<Job> _repository;
public JobService(IRepository<Job> repository)
{
_repository = repository;
}
public Job GetJob(int jobID)
{
return _repository.Get(x => x.JobID == jobID).FirstOrDefault();
}
public IEnumerable<Job> Get(Expression<Func<Job, bool>> predicate)
{
return _repository.Get(predicate);
}
}
Для вышеуказанного класса допустимо, чтобы пользовательский интерфейс вызывал следующее:
JobService jobService = new JobService(new Repository<Job>());
Job job = jobService.Get(x => x.JobID == 1).FirstOrDefault();
или ему разрешено только позвонить GetJob (int jobID)?
Это простой пример, и мой вопрос заключается в том, должен ли слой пользовательского интерфейса передавать лямбда-выражения на уровень сервиса вместо вызова определенного метода?