我尝试使用非常简单的映射实现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)));
答案 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 ,则应该从您创建的配置中创建