使用AutoMapper在列表中映射两个复杂对象

时间:2014-06-12 22:32:36

标签: c# automapper

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

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只是一个字符串列表。我已尝试过解析器方法,在此处描述Using AutoMapper to map the property of an object to a string

它失败,因为解析器仅适用于根对象。我也尝试在两个模式之间注册一个自定义,这也不起作用。

t.Schemas = List<string>
p.Schemas = List<ISchema>

public interface ISchema
{
    string name;
    string class;
}

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

1 个答案:

答案 0 :(得分:1)

您可以使用ISchema创建另一张将string转换为ConvertUsing的地图:

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