簡體   English   中英

映射到AutoMapper中的派生目標類型

[英]map to derived type of destination in AutoMapper

我想指定一個映射,以便從“Source”到“Destination”的所有映射都作為派生類“Destination”返回

    [Test]
    public void Map_SourceToDestinationAsDerivedType_ReturnsDerivedType()
    {
        // arrange
        AutoMapper.Mapper.CreateMap<Source, Destination>()
            .CreateAs<ActualDestination>() // psedu code
            .ForMember(dst => dst.Transformed, opt => opt.ResolveUsing(src => src.Property));

        var source = new Source{Property = "hi mom" };

        // act
        var destination = AutoMapper.Mapper.Map<Destination>(source);

        // assert
        Assert.That(destination, Is.InstanceOf<ActualDestination>());
    }

    public class Source
    {
        public string Property { get; set; }
    }

    public class Destination
    {

    }

    public class ActualDestination : Destination
    {
        public string Transformed { get; set; }            
    }

Automapper不直接支持此功能

然而,您可以獲得的最接近的是為Source, ActualDestination對定義映射器

AutoMapper.Mapper.CreateMap<Source, ActualDestination>() 
    .ForMember(dst => dst.Transformed, opt => opt.ResolveUsing(src => src.Property)); 

然后使用Source, Destination映射中的ConstructUsing選項執行從SourceActualDestination

AutoMapper.Mapper.CreateMap<Source, Destination>()
    .ConstructUsing((Source s) => AutoMapper.Mapper.Map<ActualDestination>(s));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM