Я пытаюсь отобразить два объекта, используя только их интерфейсы, но возвращаемое значение всегда является объектом с пустыми / нулевыми свойствами:
Доменный интерфейс:
public interface ICustomer
{
int Age { get; }
string Name { get; }
}
Интерфейс DAL:
public interface ICustomerEntity
{
int Age { get; }
string Name { get; }
}
Я пытаюсь сопоставить их с помощью следующего кода:
class Program
{
static void Main(string[] args)
{
MapperConfig.RegisterMappings();
ICustomer customer1 = new Customer("John", 30);
ICustomer customer2 = new Customer("Mary", 30);
var customerEntity = Mapper.Map<ICustomer, ICustomerEntity>(customer1);
var customerReturned = Mapper.Map<ICustomer>(customerEntity);
}
}
Вот мой файл конфигурации:
public class MapperConfig
{
public static void RegisterMappings()
{
Mapper.Initialize(c =>
{
c.AddProfile<DomainToEntitiesMappingProfile>();
c.AddProfile<EntitiesToDomainMappingProfile>();
});
}
}
И это моипрофили:
class DomainToEntitiesMappingProfile : Profile
{
protected override void Configure()
{
Mapper.CreateMap<ICustomer, ICustomerEntity>()
.Include<Customer, CustomerEntity>();
}
}
class EntitiesToDomainMappingProfile : Profile
{
protected override void Configure()
{
Mapper.CreateMap<ICustomerEntity, ICustomer>()
.Include<CustomerEntity, Customer>();
}
}
Когда я пытаюсь отобразить конкретные классы (удаляя интерфейсы), он работает просто отлично, но я не хочу связывать свои отображения с конкретными классами.
Как этого добиться?
Я пробовал такой же подход с AutoMapper 6, и он тоже не работал.