У меня есть интерфейс
internal interface IAttributeModel
{
string Name { get; set; }
int Id { get; set; }
string AttType { get; set; }
}
И класс, реализующий интерфейс
public class Currency:IAttributeModel
{
private string _type;
public Currency()
{
_type = "Currency";
}
public string Name { get; set; }
public int Id { get; set; }
string IAttributeModel.AttType
{
get { return _type; }
set { _type = value; }
}
}
Выше класс реализовал одно свойство явно.
И моя сущность выглядит следующим образом.
public class ProviderAttribute
{
public int Id { get; set; }
public string Name { get; set; }
public string AttType { get; set; }
}
И я создал простое сопоставление
Mapper.CreateMap<Entities.ProviderAttribute, Models.Currency>();
Mapper.CreateMap<Models.Currency, Entities.ProviderAttribute>();
Вышеуказанное отображение всегда устанавливает переопределение свойства AttType объекта Currency в значение null во время отображения. Вероятно, это происходит потому, что Currency явно реализует интерфейс IAttributeModel, и мое сопоставление не в состоянии найти это.
Как я могу применить свое сопоставление для просмотра интерфейса IAttributeModel.
Благодарю.
Вы должны передать объект Currency в тип интерфейса IAttributeModel:
Mapper.Map((IAttributeModel)currency, providerAttribute);
И вы должны позволить AutoMapper знать, как сопоставить интерфейс:
Mapper.CreateMap<ProviderAttribute, Currency>();
Mapper.CreateMap<Currency, ProviderAttribute>();
Mapper.CreateMap<ProviderAttribute, IAttributeModel>();
Mapper.CreateMap<IAttributeModel, ProviderAttribute>();