我有以下列表,其中包含字段名稱和值。.NET - 將/映射列表轉換爲對象,反之亦然
public class FormField
{
public string FieldName { get; set;}
public string FieldValue { get; set;}
}
var formData = new List<FormField>();
formData.Add(new FormField { FieldName = "Date", FieldValue = "2017-09-14" });
formData.Add(new FormField { FieldName = "Name", FieldValue = "Job blogs" });
formData.Add(new FormField { FieldName = "IsEnabled", FieldValue = "true" });
如何將列表轉換或映射到以下類中?注意FieldNames映射到類的屬性。
public class MyViewModel
{
[Required]
public DateTime Date { get; set; } = DateTime.now;
[Required]
public string Name { get; set; }
public boolean IsEnabled { get; set; }
public IEnumerable<SelectListItem> Titles
{
get
{
var options = new List<SelectListItem>
{
new SelectListItem(){ Value = "Mr", Text = "Mr" },
new SelectListItem(){ Value = "Mrs", Text = "Mrs" }
};
return options;
}
}
}
任何幫助表示讚賞。我需要以某種方式序列化列表嗎? automapper能做到這一點嗎?
* UPDATE *
我嘗試以下,但儘管automapper文檔它不工作,說明你可以從字典直接去反對:
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Dictionary<string, object>, MyViewModel>();
}
}
var viewModel = Mapper.Map<MyViewModel>(formData.ToDictionary(x => x.FieldName, x => (object) x.FieldValue))
注:記錄我m使用automapper v 5.0.2
我也需要從對象返回到字典,但能夠排除屬性,如public IEnumerable<SelectListItem> Titles {get;}
是Automapper可以執行此操作,或者如果您希望避免開銷,則可以通過傳遞FormField的對象作爲參數,手動映射MyViewModel的構造函數中的值Automapper。 – TechGirl
@TechGirl任何代碼來協助?在構造函數中映射將不是理想的。 – adam78
@TechGirl,真的嗎?我非常懷疑這一點。 –