我有一个像这样的源类:
public partial class Source
{
...
public int ScheduleBaseId { get; set; }
public int ScheduleIncrement { get; set; }
public int SubscriptionTypeId { get; set; } // <- Determines the concrete class to map to
public string SubscriptionCriteriaJson { get; set; } // <- Map to interface class
...
}
我正在映射到这个目标类:
public class Dest
{
...
public Schedule Schedule { get; set; }
public ISubscriptionCriteria SubscriptionCriteria { get; set; }
...
}
我想将使用接口的Source.SubscriptionCriteriaJson
属性映射到。Dest.SubscriptionCriteria
可以使用来确定接口的具体类Source.SubscriptionTypeId
。我试图在这里解决两个问题以映射到SubscriptionCriteria
:
- 将 json 字符串反序列化为
ISubscriptionCriteria
对象。 - 映射到
ISubscriptionCriteria
基于的正确具体类型SubscriptionTypeId
。
任何想法/指针我如何在 AutoMapper 中实现这一点?我是 AutoMapper 的新手,所以我仍然在摸索。
到目前为止,这就是我对其余映射的了解:
var config = new MapperConfiguration(
cfg => cfg.CreateMap<Source, Dest>()
.ForMember(dest => dest.Schedule, opt => { opt.MapFrom(src => new Schedule((ScheduleBaseEnum)src.ScheduleBaseId, src.ScheduleIncrement)); })
);