使用自动映射器在两个复杂对象之间映射列表

本文关键字:映射 复杂 两个 对象 列表 之间 | 更新日期: 2023-09-27 18:08:29

我有两个复杂的对象,每个对象都有一个列表。我正在使用自动映射器将它们映射在一起,例如:

ConfigurationStore
    .CreateMap<IProcessDefinition, ProcessDefinition>()
    .ForMember(p => p.ProcessDefinitionDomainId, opt => opt.MapFrom(t => t.DomainId))
    .ForMember(p => p.Schemas, opt => opt.MapFrom(t => t.Schemas))
    .ForMember(p => p.ConfigurationValues, opt => opt.MapFrom(t => t.Configs))
    .ForMember(p => p.Libraries, opt => opt.MapFrom(t => t.Libraries));

在给定的示例中,t.SchemasISchemas的实现列表,它是一个具有名称和值成员的类,两者都是 string 类型。另一方面,p.Schemas只是一个字符串列表。我已经尝试了解析器方法,在这里描述 使用自动映射器将对象的属性映射到字符串。

它失败,因为解析程序仅适用于根对象。我还尝试在两个架构之间注册自定义,这也不起作用。

t.Schemas = List<string>
p.Schemas = List<ISchema>
public interface ISchema
{
    string name;
    string class;
}

如果您对我有任何建议,请告诉我,非常感谢。

使用自动映射器在两个复杂对象之间映射列表

您可以使用以下

ConvertUsing方法创建另一个将ISchema转换为string的地图

ConfigurationStore.CreateMap<ISchema, string>()
.ConvertUsing(s => s.name);;