AutoMapper - 为接口成员创建映射

时间:2014-07-15 19:53:33

标签: c# entity-framework automapper

我有一个界面

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>(); 

以上映射始终在映射时将Currency对象的AttType属性设置为null。我可能正在发生这种情况,因为Currency显式实现了IAttributeModel接口,我的映射无法找到它。

如何强制执行映射以查看IAttributeModel接口。

感谢。

1 个答案:

答案 0 :(得分: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>();