2016-11-30 125 views
1

什么是最好的方法使用AutoMapper与静态工厂方法的值对象:AutoMapper静态工厂方法

public class ImmutableDetail 
{ 
    public static ImmutableDetail Create(string detail) => new ImmutableDetail(detail); 

     private ImmutableDetail(string detail) 
     { 
     Detail = detail; 
     } 

     public string Detail { get;} 

    } 

在哪里我希望能够到:

var immutableDetails = Mapper.Map<ImmutableDetail>(source); 

回答

2

下面的类:

public class DummySource 
{ 
    public string Detail { get; set; } 
} 

public class ImmutableDetail 
{ 
    public static ImmutableDetail Create(string detail) { return new ImmutableDetail(detail); } 

    private ImmutableDetail(string detail) 
    { 
     Detail = detail; 
    } 

    public string Detail { get; private set; } 
} 

可以使这样的映射:

Mapper.CreateMap<DummySource, ImmutableDetail>().ConstructUsing((DummySource ds) => ImmutableDetail.Create(ds.Detail)); 
var source = new DummySource { Detail = "Hello" }; 
var immutableDetails = Mapper.Map<ImmutableDetail>(source);