Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未调用AutoMapper ConvertUsing_C#_Generics_Automapper 5 - Fatal编程技术网

C# 未调用AutoMapper ConvertUsing

C# 未调用AutoMapper ConvertUsing,c#,generics,automapper-5,C#,Generics,Automapper 5,我想使用ConvertUsing转换基类的两个属性,但没有调用它 基类 public abstract class BaseDadoMestreViewModel { public DateTime UltimaAtualizacao { get; set; } public bool Excluido { get; set; } public bool Ativo { get; set; } } public abstract class BaseDadoMestre

我想使用ConvertUsing转换基类的两个属性,但没有调用它

基类

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; }
}
public抽象类basedDomainStreeViewModel
{
公共日期时间Ultimatualizao{get;set;}
公共bool Excluido{get;set;}
公共bool-Ativo{get;set;}
}
公共抽象类basedDomainStre:EntityCrud
地点:班级
{
公共日期时间Ultimatualizao{get;set;}
公共字符串MarcadoEliminacao{get;set;}
公共bool Desabilitado{get;set;}
}
班级

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

public class CalendarioDTO: BaseDadoMestre<CalendarioDTO>
{
    public DateTime Data { get; set; }
}
公共类CalendarioViewModel:BasedDomainStreeViewModel
{
公共日期时间数据{get;set;}
}
公共类CalendarioDTO:BasedAdminester
{
公共日期时间数据{get;set;}
}
IT类型转换器

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;
    }
}
公共类基类转换器:
ITYPE转换器,
IT类型转换器
地点:BaseDadoMestre
{
公共BasedOmeStreetViewModel转换(BasedOmeStre源、BasedOmeStreetViewModel目标、ResolutionContext上下文)
{
destination.Excluido=(source.MarcadoEliminacao==“X”);
destination.Ativo=!source.Desabilitado;
返回目的地;
}
公共BasedOmeStre转换(BasedOmeStreeViewModel源、BasedOmeStre目标、ResolutionContext上下文)
{
destination.MarcadoEliminacao=(source.Excluido?空:“X”);
destination.Desabilitado=!source.Ativo;
返回目的地;
}
}
最后是我的地图:

CreateMap(typeof(BaseDadoMestre<>), typeof(BaseDadoMestreViewModel)).ConvertUsing(typeof(BaseConverter<>));
CreateMap(typeof(BaseDadoMestreViewModel), typeof(BaseDadoMestre<>)).ConvertUsing(typeof(BaseConverter<>));
CreateMap<CalendarioDTO, CalendarioViewModel>()
CreateMap(typeof(BaseDadoMestre)、typeof(BaseDadoMestreViewModel)).ConvertUsing(typeof(BaseConverter));
CreateMap(typeof(BaseDadoMestreViewModel)、typeof(BaseDadoMestre)).ConvertUsing(typeof(BaseConverter));
CreateMap()
运行映射命令时,未调用ConvertUsing

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

从Automapper文档中,您需要在为基类创建映射时指定继承,或者从派生类创建映射

勾选这个:


我尝试了这个,但它不起作用,它仍然无法运行ITypeConverter。我需要实现ITypeConverter,因为它们是泛型类,如果没有它,我无法编写转换,因为您无法将继承与转换结合使用。。。检查这里的答案:您可能需要在每个派生类型中为“Excluido”和“Ativo”进行映射谢谢,我搜索了,但找不到它,但有人已经得到了我需要的答案这似乎并没有解决这个问题,就像让您的DTO成为一个类似于BasedAdministreViewModel的非泛型类一样。定义非泛型类之间的映射,然后按照下面的建议使用Include或IncludeBase。使用MapFrom而不是ConvertUsing。