我正在尝试有条件地映射两个基于ExtendedField.type
. 因此,如果类型是,textbox
那么我将映射到TextBox
类,但如果是,checkbox
那么我将映射到Checkbox
类。当然,这需要打开扩展以映射到其他 IHtmlElement 派生类型。
Mapper.Map<IEnumerable<ExtendedField, IEnumerable<IHtmlElement>>(extendedFields);
对象示例:
public class ExtendedField {
public string type { get; set; }
public string prompt { get; set; }
public string value { get; set; }
}
public Interface IHtmlElement {
string label { get; set; }
string type { get; set; }
string value { get; set; }
}
public class TextBox : IHtmlElement {
public string label { get; set; }
public string type { get { return "textbox"; } }
public string value { get; set; }
}
public class CheckBox : IHtmlElement {
public string label { get; set; }
public string type { get { return "checkbox"; } }
public string value { get; set; }
}
我已经创建了要映射到的映射,IHtmlElement
但我想不出如何根据type
属性动态地告诉 AutoMapper 要映射到哪个具体类。
Mapper.CreateMap<ExtendedField, IHtmlElement>()
.ForMember(dest => dest.label, opt => opt.MapFrom(src => src.prompt))
.ForMember(dest => dest.type, opt => opt.MapFrom(src => src.type))
.ForMember(dest => dest.value, opt => opt.MapFrom(src => src.extendedFieldValue));