【发布时间】:2020-09-10 16:08:38
【问题描述】:
我有一个项目,我正在尝试使用 AutoMapper 从每个类中的多个类进行映射,有一些属性我想使用一些自定义逻辑将源值解析到目标。 我尝试使用 AutoMapper 文档中记录的自定义解析器方法。
这是我的代码:
public class CustomDateTextHandler : IValueResolver<object, object, string>
{
public string Resolve(object source, object destination, string destMember, ResolutionContext context)
{
string txt = source.ToString();
txt.Replace("AM/PM", "tt");
txt.Replace("HH:MM", "hh:mm");
if (txt.Contains("format"))
{
txt.Replace("mmm", "MMM");
}
return txt;
}
}
public class SMapping : Profile
{
public SMapping()
{
CreateMap<SourceForm, s_form>()
.ForMember(dest => dest.id, opt => opt.Ignore())
.ForMember(dest => dest.cell_text, opt => opt.MapFrom<CustomDateTextHandler>())
.ForMember(dest => dest.fn_def, opt => opt.MapFrom<CustomCodeTextResolver>());
}
我想要得到的是在解析器方法中用我的替换逻辑处理的 cell_text 值,但我面临的问题是传递给解析器的是整个 SMapping 实例,我希望能够在属性名称不同的不同类中重用解析器代码,但是看看目前发生的情况,我无法真正在不同的类中使用解析器代码。
有人可以帮我吗?
提前谢谢你。
【问题讨论】:
-
“传递给解析器的是整个 SMapping 实例” - 你的意思是“传递给解析器的是整个 SourceForm 实例”吗?
标签: c# automapper