Поскольку в ваших сервисах будет выполнено преобразование в обоих направлениях, просто оберните autopper во вставленный интерфейс, и все готово.Все должно быть сделано в MyProject.Core.
РЕДАКТИРОВАТЬ:
Что касается услуг, это зависит от того, как вы их создаете.По сути, вам нужен сервис отображения, поэтому создайте его как любой другой сервис и внедрите его в классы, которые требуют отображения.
Мне нравится этот шаблон:
public class MyService : IMyService
{
public MyService(IDepedencySolver ds, IRepository rep = null, IMapper mapper = null)
{
_rep = rep ?? ds.GetService<IDependencySolver>();
_mapper = mapper ?? ds.GetService<IMapper>();
...
}
}
Он позволяет вам вводить либо просто распознаватель служб, например Autofac / Splat / etc, либо вставлять все как фиктивные в тестах.
Некоторым людям нравится иметь преобразователь по умолчанию в качестве статической переменной, чтобы избежать первого аргумента.
Итак, чтобы ответить на вопрос, нужна ли вам ссылка на AM в обоих проектах: нет, только в MyProject.Ядро, где вы на самом деле используете классы Automapper.
Вы должны обернуть их в IMapperService
или что-то в этом роде.Затем в MVC, когда вы регистрируете сервисы, вы регистрируете экземпляр new MapperService()
- и для этого вам нужна только ссылка на MyProject.Core