2014-02-25 127 views
3

我很抱歉我的簡單問題,但我無法讓它工作。 我的問題: 我想從域對象映射到模型對象,但是, 在域對象我有一個列表,所以我的目標是這樣的:Automapper自定義解析器

public class Conference 
{ 
    public virtual int Id{get;set;} 
    public virtual int NumberOfTables{get;set;} 
    public virtual IList<People> Peoples{get;set;} 
} 

public class People 
{ 
    public virtual int Id{get;set;} 
    public virtual string FirstName{get;set;} 
    public virtual string LastName{get;set;} 
    public virtual Conference Conference{get;set;} 
} 

My model : 


public class Model 
{ 
    public int Id{get;set;} 
    public int NumberOfTables{get;set;} 
    public string Peoples{get;set;} 
} 

我希望人們能像:「姓」 +」姓「+」,」所有的人從名單 現在上映射從域obj轉換爲模式,我有這樣的事情:

Mapper.CreateMap<Conference,Model>() 
    .ForMember(c => c.Id, op => op.MapFrom(v => v.Id)) 
    .ForMember(c => c.NumberOfTables, op => op.MapFrom(v => v.NumberOfTables)) 
     .ForMember(c => c.Peoples, op => op//here I want to use ResolveUsing or something like this ) 



    public class CustomConvert: ValueResolver<IList<GroupOfComponentInComplexToMeal>, string> 
    { 
     protected override string ResolveCore(IList<People> source) 
     { 
      string result = ""; 
      if (source.Any()) 
      { 
       for (int i = 0; i < source.Count; i++) 
       { 
        var name=source[i].FirstName+source[i].LastName; 
        result += name; 
        if (i < source.Count - 1) 
        { 
         result += ","; 
        } 
       } 
      } 
      return result; 
     } 
    } 

我這樣做CustomConvert但我不能用我的映射器合併。

我真的不現在,如果我需要使用自定義轉換器,但我想了解他們如何工作。 任何幫助將不勝感激。

回答

5

它很簡單,但我仍然需要一些很好的示例來了解有關自定義解析的更多信息。

解決方案:

Mapper.CreateMap<Conference,Model>() 
    .ForMember(c => c.Id, op => op.MapFrom(v => v.Id)) 
    .ForMember(c => c.NumberOfTables, op => op.MapFrom(v => v.NumberOfTables)) 
     .ForMember(c => c.Peoples, op => 
         op.ResolveUsing<CustomConvert>() 
          .FromMember(x => x.Peoples));