使用 AutoMapper,我可以覆盖属性的解析类型吗?例如,给定这些类:
public class Parent
{
public Child Value { get; set; }
}
public class Child { ... }
public class DerivedChild : Child { ... }
我可以配置 AutoMapper 以使用
Child Value
实例自动映射 DerivedChild
属性吗?假设映射如下所示:map.CreateMap<ChildEntity, DerivedChild>();
map.CreateMap<ParentEntity, Parent>()
.ForMember(p => p.Value, p => p.UseDestinationType<DerivedChild>());
(我是 projecting from LINQ entities 。我能找到的最接近的是使用 custom type converter ,但看起来我需要覆盖整个映射。)
最佳答案
这是一种方法:
map.CreateMap<ChildEntity, DerivedChild>();
map.CreateMap<ParentEntity, Parent>()
.ForMember(
x => x.Value,
opt => opt.ResolveUsing(
rr => map.Map<DerivedChild>(((ParentEntity)rr.Context.SourceValue).Value)));
ResolveUsing
允许为映射值指定自定义逻辑。这里使用的自定义逻辑实际上是调用
map.Map
来映射到 DerivedChild
。关于c# - 使用 AutoMapper 覆盖解析的属性类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34910641/