0
我試圖根據ExtendedField.type
有條件映射兩個對象。所以如果類型是textbox
那麼我會映射到TextBox
類,但如果它是checkbox
那麼我會映射到Checkbox
類。當然這需要擴展以映射到其他IHtmlElement派生類型。使用Automapper動態映射
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
,但我想不出如何動態地告訴AutoMapper其具體類映射到基於關閉type
屬性。
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));
謝謝你,我真的很喜歡這個想法,但我沒有自由來改變':使用
例子ExtendedField.type'值是要映射到的類的標準名稱。 – bflemi3
mb您可以創建幫助程序,它將包含帶有「textbox」,「checkbox」等字符串的私有字典作爲鍵,具體類型爲值和公共方法,並將其作爲參數變成字符串並返回\t 映射的必要類型。在ExtFieldToIHtmlElementConverter中進行一些更改。看到這裏的例子:http://pastebin.com/8neMdXhb – alxndr
是的,這正是我正在考慮的impl :) – bflemi3