可以说我有这些模型
public class Mouse
{
public string Cheese { get; set; }
}
public class Cat
{
public string Hairball { get; set; }
}
public class Dog
{
public string ChewyToy { get; set; }
}
我将鼠标映射到猫,然后将猫映射到狗:
Mapper.CreateMap<Mouse, Cat>().ForMember(m => m.Hairball, o => o.MapFrom(src => src.Cheese));
Mapper.CreateMap<Cat, Dog>().ForMember(m => m.ChewyToy, o => o.MapFrom(src => src.Hairball));
通过扩展,鼠标也应该映射到狗,对吧?当我尝试在两者之间进行映射时:
var mouse = new Mouse() { Cheese = "Eat me" };
Dog dog = Mapper.Map<Mouse, Dog>(mouse);
我得到一个例外:
尝试将 App_Start.MapConfig+Mouse 映射到 App_Start.MapConfig+Dog。引发了“AutoMapper.AutoMapperMappingException”类型的异常。
如何在不显式创建鼠标到狗之间的地图的情况下做到这一点?这是一个更大问题的简单示例。如果它们支持这种行为,我也愿意切换框架,例如 Value Injector、Glue 等。