繁体   English   中英

Automapper 动态解析器

[英]Automapper Dynamic Resolver's

我正在尝试在 automapper 之上创建一个抽象层,它使用户能够为他们映射的每个属性动态添加自定义规则。

鉴于模型

public class Entity
{
    public int Index { get; set; }
}

public class DTO
{
    public int Count { get; set; }
}

我们可以配置 Automapper 来映射实体,如下所示:

//sorry this is pseudo coded
cfg.CreateMap<Entity, DTO>()
    .ForMember(dest => dest.Index, 
        opt => opt.ResolveUsing<IndexResolver>());


public class IndexResolver: ValueResolver<DTO, int>, 
{
    protected override string ResolveCore(DTO source)
    {
        return source.Count - 1;
    }
}

这是有效的,因为我们将规则映射到值解析器,但是如果我想在运行时创建规则是可能的。 我希望能够配置这样的东西:

cfg.CreateMap<Entity, DTO>()
    .ForMember(dest => dest.Index, 
        opt => opt.Resolver(d => d.Count - 1);

有没有办法可以添加带有表达式的解析器,这样我就不需要从 ValueResolver 继承?

我的第一个想法是创建一个通用的自定义解析器,它在其构造函数中使用一个表达式。 然后你应该能够做到:

.ResolveUsing(new LambdaResolver(d => d.Count - 1))

暂无
暂无

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

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