Automapper -AutoMapper.AutoMapperMappingException

时间:2016-05-05 07:29:07

标签: c# automapper automapper-4

我尝试使用非常简单的映射实现Automapper,但它不起作用。 我正在尝试将System.Security.Claims.Claim类型映射到另一个类型ClaimItem:

public class ClaimItem
{
    public string Type { get; set; }
    public string Value { get; set; }
}

但我总是得到:

  

AutoMapper.AutoMapperMappingException:缺少类型映射配置或不支持的映射。

     

映射类型:声明 - > ClaimItem System.Security.Claims.Claim - >   CommonAuth.ClaimItem

     

目标路径:ClaimItem

     

来源价值:   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/dateofbirth:   2016年5月5日

这是我的配置:

var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Claim, ClaimItem>(MemberList.Destination);
});

config.AssertConfigurationIsValid();

var cls = getClaims();
List<ClaimItem> list = new List<ClaimItem>();
cls.ForEach(cl => list.Add(Mapper.Map<ClaimItem>(cl)));

1 个答案:

答案 0 :(得分:2)

the documentation开始,你必须从config创建mapper。所以你应该像你的代码一样使用

 private static Mapper _mapper;
    public static Mapper Mapper
    {
        get
        {
            if (_mapper == null)
            {
                var config = new MapperConfiguration(cfg =>
                {
                    cfg.CreateMap<Claim, ClaimItem>(MemberList.Destination);
                });

                config.AssertConfigurationIsValid();
                _mapper = config.CreateMapper();
            }
            return _mapper;
        }
    }

这意味着如果您有静态 Mapper ,则应该从您创建的配置中创建