в многоуровневой архитектуре DDD предположим, что у нас есть уровень пользовательского интерфейса, который взаимодействует с моделью домена через службу приложений на основе ViewModel. Служба приложений получает общий репозиторий посредством внедрения конструктора.
теперь, на уровне пользовательского интерфейса для внедрения универсального репозитория, нам нужно добавить DomainModel.dll в проект пользовательского интерфейса, поскольку параметр типа универсального репозитория определен в модели предметной области.
Правильно ли добавлена DLL DomainModel к уровню пользовательского интерфейса или на уровне пользовательского интерфейса должна быть ссылка только на AppService.dll?
Например :
//DomainModel.dll
public class StudentEntity
{
public long ID {get;set;}
public string FirstName {get;set;}
...
}
public interface IRepository<T> where T :class
{
void Insert(T enity);
...
}
//ApplicationService.dll
public class StudentService
{
private IRepository<StudentEntity> _studentRep;
public StudentService(IRepository<StudentEntity> studentRep)
{
_studentRep=studentRep;
}
...
}
//UI layer
public class Main
{
public class Program
{
public void Main(string[] args)
{
var studentService=new StudentService(??????);
// here for injecting Generic Repository we need to add domainModel.Dll to ui for access type parameter of generic repository
}
}
}
Наилучшие пожелания