AutoMapper - Создание карты для члена интерфейса

1

У меня есть интерфейс

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.

Благодарю.

Теги:
entity-framework
automapper

1 ответ

0

Вы должны передать объект Currency в тип интерфейса IAttributeModel:

Mapper.Map((IAttributeModel)currency, providerAttribute);

И вы должны позволить AutoMapper знать, как сопоставить интерфейс:

Mapper.CreateMap<ProviderAttribute, Currency>();
Mapper.CreateMap<Currency, ProviderAttribute>();
Mapper.CreateMap<ProviderAttribute, IAttributeModel>();
Mapper.CreateMap<IAttributeModel, ProviderAttribute>();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню