2014-01-27 131 views
1

我有一个创建从数组映射到对象类型的问题。所以任何人都有这个答案,那么请帮助我。Automapper:阵列到对象映射

视图模型(来源类):

public class HealthView : IView 
{ 
    public Guid Id { get; set; } 
    public string Type { get; set; } 
    public string Value { get; set; } 

    [JsonIgnore] 
    public DateTime? HealthCheckDateTime { get; set; } 
    public string HealthCheckDateTimeString { get { return HealthCheckDateTime.GetValueOrDefault().ToString(CultureInfo.InvariantCulture); } } 
} 

在此(目标类)转化:

public class HealthResponse : WebApiResonseBase 
{ 
    public HealthResponse() 
    { 
     Value = new HealthLine[0]; 
    } 

    public HealthLine[] Value { get; set; } 

    public class HealthLine 
    { 
     public Guid Id { get; set; } 
     public string Type { get; set; } 
     public string Value { get; set; } 
     public DateTime? HealthCheckDateTime { get; set; } 
     public string HealthCheckDateTimeString { get; set; } 
    } 
} 

映射:

CreateMap<HealthView[], HealthResponse>() 
      .ForMember(x => x.RedirectRequired, o => o.Ignore()) 
      .ForMember(x => x.Uri, o => o.Ignore()); 

这是我的整个过程中,我尝试以不同的方式,但我得到了错误。

+0

你到底想达到什么目的? –

+0

我已经解决了这个问题。但是我的身边出现了一些问题。所以我会在稍后给出答案。 –

+0

我正在尝试数组映射到使用automapper的对象成员映射.. –

回答

3

我已经解决了这个问题,此代码。

映射:

CreateMap<HealthView, HealthResponse.HealthLine>(); 

在控制器:

var response = new HealthResponse 
     { 
      Value = healthView.Select(Mapper.Map<HealthView, HealthResponse.HealthLine>).ToArray() 
     }; 
2

我认为你要映射HealthView到健康热线所以试试这个:

CreateMap<HealthView, HealthView>(); 

var response = new HealthResponse(); 
var views = an array of HealthView objects from somewhere. 

response.Value = Mapper.Map<IEnumerable<HealthView>,IEnumerable<HealthLine>>(views); 
+0

感谢您的帮助。 –