使用自动映射器在两个复杂对象之间映射列表
本文关键字:映射 复杂 两个 对象 列表 之间 | 更新日期: 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.Schemas
是ISchemas
的实现列表,它是一个具有名称和值成员的类,两者都是 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);;