У меня есть ядро, в котором интерфейс объявлен как
public interface IRequestProvider
{
int SomeId { get; set; }
}
Реализация также определена в том же слое
и затем у меня есть другой слой Repo layer, в котором я вызываю другой внешний пакет nuget с именем DataAccess layer
в котором я объявил
public interface IRequestProvider
{
int SomeId { get; set; }
int SomeOtherId { get; set; }
}
так В ядре и DataAccess оба уровня я определил IRequestProvider
Ламар-код
public static class SomeRegistry
{
public static void RegisterDISome(this ServiceRegistry services, IConfigurationRoot configurationRoot)
{
services.For<IRequestProvider>().Use<RequestProvider>().Scoped();
services.For<DataAccessInterfaces.IRequestProvider>().Use<DataAccessModel.RequestProvider>().Scoped();
}
}
Использование Scoped для передачи одного и того же экземпляра в запросе
Automapper включен
public class DomainToRepoMappingsProfile : Profile
{
public DomainToRepoMappingsProfile()
{
this.CreateMap<IRequestProvider, DataAccess.IRequestProvider>()
.ForMember(dst => dst.SomeOtherId, opt => opt.Ignore());
}
}
Я ожидаю, что когда я изменю что-либо в Core.IRequestProvider из любого слоя, это должно автоматически отражаться в слое DataAccess.IRequestProvider
В настоящее время я каждый раз вызываю IDomainToRepoMappingRequestProvider.map () для установки DataAccess.IRequestProvider
public class DomainToRepoMappingRequestProvider : IDomainToRepoMappingRequestProvider
{
private readonly IMapper _mapper = null;
private readonly IRequestProvider _requestProvider = null;
private DataAccess.IRequestProvider _dataAccessRequestProvider = null;
public DomainToRepoMappingRequestProvider(IRequestProvider requestProvider, DataAccess.IRequestProvider dataAccessRequestProvider, IMapper mapper)
{
_mapper = mapper;
_requestProvider = requestProvider;
_dataAccessRequestProvider = dataAccessRequestProvider;
}
public void Map()
{
_mapper.Map(_requestProvider, _dataAccessRequestProvider);
}
}
Я нашел решение для автоматического отражения изменений при изменении чего-либо без вызова map ()