简体   繁体   English

未调用AutoMapper ConvertUsing

[英]AutoMapper ConvertUsing is not being called

I want to transform two properties of base classes using ConvertUsing, but it is not being called 我想使用ConvertUsing转换基类的两个属性,但是没有被调用

Base classes 基类

public abstract class BaseDadoMestreViewModel
{
    public DateTime UltimaAtualizacao { get; set; }
    public bool Excluido { get; set; }
    public bool Ativo { get; set; }
}

public abstract class BaseDadoMestre<TEntity> : EntityCrud<TEntity> 
    where TEntity : class
{
    public DateTime UltimaAtualizacao { get; set; }
    public string MarcadoEliminacao { get; set; }
    public bool Desabilitado { get; set; }
}

Classes

public class CalendarioViewModel: BaseDadoMestreViewModel
{
    public DateTime Data { get; set; }
}

public class CalendarioDTO: BaseDadoMestre<CalendarioDTO>
{
    public DateTime Data { get; set; }
}

ITypeConverter ITypeConverter

public class BaseConverter<TEntity> : 
    ITypeConverter<BaseDadoMestre<TEntity>, BaseDadoMestreViewModel>,
    ITypeConverter<BaseDadoMestreViewModel, BaseDadoMestre<TEntity>> 
    where TEntity : BaseDadoMestre<TEntity>
{
    public BaseDadoMestreViewModel Convert(BaseDadoMestre<TEntity> source, BaseDadoMestreViewModel destination, ResolutionContext context)
    {
        destination.Excluido = (source.MarcadoEliminacao== "X");
        destination.Ativo = !source.Desabilitado;

        return destination;
    }

    public BaseDadoMestre<TEntity> Convert(BaseDadoMestreViewModel source, BaseDadoMestre<TEntity> destination, ResolutionContext context)
    {
        destination.MarcadoEliminacao = (source.Excluido ? null : "X");
        destination.Desabilitado = !source.Ativo;

        return destination;
    }
}

And finally my map: 最后是我的地图:

CreateMap(typeof(BaseDadoMestre<>), typeof(BaseDadoMestreViewModel)).ConvertUsing(typeof(BaseConverter<>));
CreateMap(typeof(BaseDadoMestreViewModel), typeof(BaseDadoMestre<>)).ConvertUsing(typeof(BaseConverter<>));
CreateMap<CalendarioDTO, CalendarioViewModel>()

When I run the mapping command ConvertUsing is not called. 当我运行映射命令时,未调用ConvertUsing。

mapper.Map<CalendarioViewModel>(new CalendarioDTO() { MarcadoEliminacao = "X", Desabilitado = true });

As from Automapper docs you need to either specify the inheritance when creating the mapping for base classes either from derived. 从Automapper文档开始,在为派生的基类创建映射时,您需要指定继承。

Check this one: 检查一下:

http://docs.automapper.org/en/stable/Mapping-inheritance.html http://docs.automapper.org/en/stable/Mapping-inheritance.html

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM