2016-10-03 44 views
0

在目标类的副本是否有办法让整个源对象在我的目的地类作为一个属性的副本..饲养来源,使用Automapper

例如

来源:

class SourceClass 
{ 
    prop string Prop1 { get; set; } 
    prop string Prop2 { get; set; } 
} 

目的地:

class DestinationClass 
{ 
    prop string Prop1 { get; set; } 
    prop string Prop2 { get; set; } 
    prop SourceClass SourceClassCopy { get; set; } 
} 

,并使用automapper配置类似

AutoMapper.Mapper.Initialize(cfg => { 
     cfg.ReplaceMemberName("this", "SourceClassCopy"); 
     cfg.CreateMap<SourceClass, DestinationClass>(); //or .ForMember("SourceClassCopy", d => d.MapFrom(s => s)); 
    }); 

为什么我这样做是怎么把我有一个分层对象,并会喜欢为反向映射保留副本,因为Source类没有默认构造或者这将帮助我扭转地图。另外,源类是,我不能修改:(和有方法/接受整个源对象的函数库感谢所有帮助谢谢

回答

0

你可以这样说:。

public class SourceClass 
{ 
    public string Prop1 { get; set; } 
    public string Prop2 { get; set; } 
} 

public class DestinationClass 
{ 
    public string Prop1 { get; set; } 
    public string Prop2 { get; set; } 
    public SourceClass SourceClassCopy { get; set; } 
} 

public class Program 
{ 
    public void Main() 
    { 
     var source = new SourceClass(); 
     source.Prop1 = "Prop1Source"; 
     source.Prop2 = "Prop2Source"; 

     var destination = new DestinationClass(); 
     destination.Prop1 = "Prop1Dest"; 
     destination.Prop2 = "Prop2Dest"; 

     var sourceinDest = new SourceClass(); 
     sourceinDest.Prop1 = "Prop1sourceinDest"; 
     sourceinDest.Prop2 = "Prop2sourceinDest"; 
     destination.SourceClassCopy = sourceinDest; 

     // Configure AutoMapper 
     Mapper.CreateMap<SourceClass, DestinationClass>() 
      .ForMember(dest => dest.SourceClassCopy, m=>m.MapFrom(src=>src)); 

     Mapper.Map<SourceClass, DestinationClass>(source, destination); 


     Console.WriteLine(destination.Prop1); 
     Console.WriteLine(destination.Prop2); 
     Console.WriteLine(destination.SourceClassCopy.Prop1);  
     Console.WriteLine(destination.SourceClassCopy.Prop2);  
    } 
} 
+0

是的,这工作..谢谢 – narcs