Automapper如何在2个通用类型之间映射自定义接口

问题描述 投票:0回答:1

我有一个界面:

public interface IQueryResult<T> where T : IBaseEntity
{
    PageInfo PageInfo { get; }
    IEnumerable<T> Payload { get; }     
}

实施:

public class QueryResult<T> : IQueryResult<T> where T : IBaseEntity
{
    public QueryResult()
    {

    }
    public QueryResult(IEnumerable<T> payload, PageInfo pageInfo)
    {
        Payload = payload;
        PageInfo = pageInfo;
    }
    public QueryResult(IEnumerable<T> payload)
    {
        Payload = payload;
    }
    public IEnumerable<T> Payload { get; private set; }
    public PageInfo PageInfo { get; private set; }
}

映射器配置:

    CreateMap<EntityA, DtoA>();
    CreateMap<DtoA, EntityA>();

    CreateMap<EntityB, DtoB>();
    CreateMap<DtoB, EntityB>();

    CreateMap(typeof(IQueryResult<>), typeof(IQueryResult<>));

然后,我想在控制器中执行此操作:

IQueryResult<EntityA> entities = service.GetAll();
IQueryResult<DtoA> result = _mapper.Map<IQueryResult<DtoA>>(entities);

当前,它没有中断,但是问题在于,由于属性具有私有设置器,因此目标的属性为null

我需要某种方式来告诉它如何映射属性或使用我猜的构造函数

c# asp.net-core automapper
1个回答
-1
投票

如果有人遇到这个问题,我会设法解决的,我将在这里留此:

© www.soinside.com 2019 - 2024. All rights reserved.