我有两个复杂的对象,每个对象都有一个列表。我正在使用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.Schemas
是ISchemas
的实现列表,它是一个具有名称和值成员的类,两者都是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;
}
如果您对我有任何建议,请告诉我,非常感谢。
答案 0 :(得分:1)
您可以使用ISchema
创建另一张将string
转换为ConvertUsing
的地图:
ConfigurationStore.CreateMap<ISchema, string>()
.ConvertUsing(s => s.name);;