以下是使用 Automapper 可以正常工作的简单对象:
public class Source
{
public int Id {get;set;}
public string Name {get;set;}
}
public class Destination
{
public int Id {get;set;}
public string Name {get;set;}
}
SampleClass.cs
using Automapper;
public class SampleClass
{
private IMapper _mapper;
public SampleClass(IMapper mapper)
{
_mapper = mapper;
}
public void Logic(Souce source)
{
var Dest = _mapper.Map<Destination>(source);
}
}
上面的映射语句工作正常,我看到所有字段都从源映射到目标,因为它是一个简单的对象。
但我的要求是,我有一个复杂的对象结构如下:
public class Source
{
public int Id {get;set;}
public string Name {get;set;}
public List<SourceChild> lstChild {get;set;}
}
public class SourceChild
{
public string Address{get;set;}
}
public class Destination
{
public int Id {get;set;}
public string Name {get;set;}
public List<SourceDestination> lstChild {get;set;}
}
public class SourceDestination
{
public string Address{get;set;}
}
public void Logic(Souce source)
{
var Dest = _mapper.Map<Destination>(source);
}
上述映射会导致异常,提示“缺少类型映射配置或不支持的映射”。我在这里缺少什么来映射复杂的对象?
public class SourceProfile : Profile
{
public SourceProfile()
{
CreateMap<Source, Destination>();
CreateMap<SourceChild, SourceDestination>();
}
}
MapperConfiguration _config = new MapperConfiguration(cfg => cfg.AddProfile<SourceProfile>());
如果您使用的是 ASP.NET Core,则将 AutoMapper 服务注册到 DI 容器中,其中项目程序集包含您的
Profile
类(程序集扫描以进行自动配置)。
services.AddAutoMapper(/* profileAssembly1 */);