带有静态工厂方法的 AutoMapper

gum*_*lux 2 c# automapper

使用带有静态工厂方法的值对象的 AutoMapper 的最佳方法是什么:

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

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

      public string Detail { get;}

    }
Run Code Online (Sandbox Code Playgroud)

我希望能够:

var immutableDetails = Mapper.Map<ImmutableDetail>(source);
Run Code Online (Sandbox Code Playgroud)

Bob*_*ust 7

有以下课程:

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; }
}
Run Code Online (Sandbox Code Playgroud)

你可以做这样的映射:

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