[英]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.