У меня довольно стандартный шаблон репозитория, в котором репозитории внедряются в мой контроллер MVC при создании. Репозитории инициализируются один раз для каждого AppDomain и используются другими контроллерами. Хранилища обращаются к базе данных, используя NHibernate ISessions и ICriteria, но доступ предоставляется с использованием методов ListXYZ вместо непосредственного принятия ICriteria.
Теперь мне нужен аккуратный способ ограничения результатов, возвращаемых в определенных случаях, например, одним из них может быть список всех продуктов на данном рынке, известный только при вызове действия.
Я не хочу передавать это ограничение при каждом вызове метода ListXYZ, так как это приведет к большому количеству перегруженных методов. В идеале я хотел бы иметь доступ к хранилищу, как раньше, но с наложенными ограничениями. Что-то вроде:
var rep = new ProductRepository().ApplyRestriction(new MarketRestriction("xy"));
var list = rep.ListInCategory("shirts");
Любые предложения Как мне это сделать? Или я делаю это слишком сложным для себя?