我正在使用 Automapper 从包含许多我想自动映射到标准 System.string、System.DateTime 的本土“StringType”和“DateTimeType”字段的对象进行映射。有没有办法做到这一点而不必在源对象上注册每个成员?
我正在尝试做这样的事情:
Mapper.CreateMap<StringType, string>()
.ForAllMembers(q =>
{
q.NullSubstitute(string.Empty);
q.MapFrom(p => p.Value);
});
Mapper.CreateMap<DateTimeType, DateTime>()
.ForAllMembers(q =>
{
q.NullSubstitute(DateTime.MinValue);
q.MapFrom(p => p.Value);
});
Mapper.CreateMap<InType, OutType>();
当我尝试从“InType”到“OutType”的实际转换时,我不断收到“源对象为空”异常。我尝试通过 ValueResolvers 定义转换,但这没有帮助。
这样做的正确方法是什么?(我在 stackoverflow 上看到过类似的问题,但我看到的答案都建议涉及配置步骤和/或下载另一个库来处理这种情况:在所有这些情况下,我自己的解决方案是转储 Automapper 并使用手写转换,节省时间,同时使代码更具可读性。)