我的对象上的字符串值以Markdown格式设置。映射到我的ObjectViewModel
类型时,我需要将Markdown格式化为HTML。
据我了解,映射时可以使用Resolver
和ResolveUsing
-但是我需要很多不同的字符串属性来完成该过程,并且看来他实现了{{1} }正确地决定不在Resolver
处。
CreateMap
这只会映射值。
有什么办法可以针对每个媒体资源做一些特别的事情,例如:
.ForMember(m => m.Description, o => o.MapFrom(f => f.Description))
答案 0 :(得分:0)
有两种方法可以立即使您想到:
1)ValueConverter
public class MarkDownToHtmlConverter : IValueConverter<string, string>
{
public string Convert(string sourceMember, ResolutionContext context)
{
// Convert to HTML here
string html = sourceMember;
return html;
}
}
cfg.CreateMap<Entity, EntityViewModel>()
.ForMember(x => x.Description, opt => opt.ConvertUsing(new MarkDownToHtmlConverter()));
2)AfterMap
public class HtmlToMarkdownAction : IMappingAction<Entity, EntityViewModel>
{
public void Process(Entity source, EntityViewModel destination)
{
destination.Description = source.Description; // Convert to HTML
}
}
cfg.CreateMap<Entity, EntityViewModel>()
.AfterMap<HtmlToMarkdownAction>();
尽管如此,我的看法是,转换应该在显示时在其他地方进行,例如在Razor中。似乎不是映射器要做这种转换的工作……但这只是我的意见。