Конечно, есть много способов справиться с этой ситуацией, во-первых, я бы создал интерфейс для каждой службы и поместил его в отдельную dll, например, у вас было бы два проекта для службы регистрации следующим образом:
- ILoggingService
LoggingService и я бы также сделали это для каждого отдельного boundedContext, который представляет группу проектов, которые имеют дело с одним аспектом внутри моего домена (например, операции студентов и логика внутришкольное приложение, ищите шаблон проектирования на основе домена для получения дополнительной информации) следующим образом:
IStudentsDomain
- StudentsDomain
И позволяетпредставьте, что у нас есть другие репозитории и ограниченный контекст, называемые Учителями, представленные в следующих проектах следующим образом:
- ITeachersDomain
- TeachersDomain
Теперь вы имеете в виду толькоILoggingService внутри StudentsDomain и TeachersDomain (реализация DAL oна уровне домена) и используйте внедрение зависимостей (на основе вашего проекта для asp.net mvc я бы порекомендовал Unity, внутри ядра asp.net mvc DI уже существует "из коробки", и, наконец, вы также можете использовать Unity в WPF)чтобы зарегистрировать ваши интерфейсы в их реализации, а затем запросить их внутри конструктора StudentsDomain и TeachersDomain следующим образом:
public class TeachersDomain : ITeachersDomain
{
public ILoggingService LoggingService { get; set; }
public TeachersDomain(ILoggingService loggingService)
{
LoggingService = loggingService;
}
}