【发布时间】:2018-08-07 15:46:55
【问题描述】:
我正在尝试在 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 继承?
【问题讨论】:
标签: c# expression automapper castle-dynamicproxy