Предполагая, что приложение имеет библиотеку Business Objects в интерфейсах репозиториев, библиотеку реализации и BLL (BPL), как вы решаете, что необходимо связать с репозиторием, а что - непосредственно с BPL
BO.dll
ISomeObjectRepository.cs
public interface ISomeObjectRepository:
IRepository<SomeObject>, ILazyFetchingRepository<SomeObject>
{
SomeObject GetSomeObjectByWeirdFields(IDictionary<string, object> weirdFields);
}
Repositories.dll
SomeObjectRepository.cs
public sealed class SomeObjectRepository:
BaseRepository<SomeObject>, ISomeObjectRepository
{
public SomeObject GetSomeObjectByWeirdFields(IDictionary<string, object> weirdFields){
throw new NotImplementedException();
}
}
BPL.dll
SomeObjectService.cs
public static class SomeObjectService:
{
public static SomeObject GetSomeObjectByWeirdFields(IDictionary<string, object> weirdFields){
throw new NotImplementedException();
}
}
Итак, на самом деле вопрос в том, за кого отвечает реализация GetSomeObjectByWeirdFields?Любые руководства по шаблонам приветствуются.