2016-08-05 83 views
0

看看下面的例子:是否可以使用AutoMapper来填充基类的属性?

public class Parent 
{ 
    public string Id {get; set;} 

    public Parent(string id) 
    { 
     Id = id; 
    } 
} 

public class Child : Parent 
{ 
    public string Name {get; set;} 

    public Child(string id, string name) : base(id) // <-- call base constructor 
    { 
     Name = name; 
    } 
} 

这是一个关于如何设置属性的基类的一个典型例子。

现在说我的基类包含50个属性。 我知道我可以逐行设置每个属性,但我想知道是否可以使用AutoMapper来填充属性?

我会想要做这样的事情在基类:

public class MyClass 
{ 
    public MyClassMapData(MY_DATA data) 
      { 
       // DOC_TRACK_MAIN 
       var config = new MapperConfiguration(c => 
       { 
        c.CreateMap<MY_DATA , MyClass>(); 
       }); 

       // This will map the first 45 properties. 
       var mappedData = config.CreateMapper().Map<MY_DATA , MyClass>(data.MyData); 

       // DOC_TRACK_DETAILS 
       mappedData.PROP_46 = data.Field1; 
       mappedData.PROP_47 = data.Field2; 
       mappedData.PROP_48 = data.Field3; 
       mappedData.PROP_49 = data.Field4; 
       mappedData.PROP_50 = data.Field5;    

      // How would I set mappedData to my current instance?  
      } 

    // My 50 properties... 
} 

回答

0

如果我理解正确,你正在寻找mappedData映射到当前类。如果您将var mappedData = config.CreateMapper().Map<MY_DATA , MyClass>(data.MyData);行更改为config.CreateMapper().Map<MY_DATA , MyClass>(data.MyData, this);,则应将该数据映射到您的班级。然后您可以手动设置PROP_46 - PROP_50

相关问题