2

我正在尝试在工作中学习 c#,但我不确定如何同时使用 Automapper。该站点的其他区域正在使用这种扩展方法。我试图在另一个 C# 类上使用它。

    public static TResult MapTo<TResult>(this object self)
    {
        if (self == null)
            throw new ArgumentNullException();

        return (TResult)Mapper.Map(self, self.GetType(), typeof(TResult));
    }

我收到异常“AutoMapper.dll 中发生‘AutoMapper.AutoMapperMappingException’类型的异常,但未在用户代码中处理。” 然后,当我查看内部异常时,它说:“尝试将 BlahEntity 映射到 BlahResponse。” 我不确定如何进行调试。有什么想法吗?提前致谢。

4

1 回答 1

3

您首先需要“创建”对象之间的映射,即使映射没有进行自定义。例如 :

Mapper.CreateMap<DomainObject, DTOObject>();

请注意,这是一张单向地图,要以另一种方式返回,您需要将其映射到另一个方向。请注意,有很多博客/帖子/答案说明了为什么您应该只从 Domain->DTO 而不是其他方式,但对于您应用程序中的其他类型的对象应该没问题。所以 :

Mapper.CreateMap<DTOObject,DomainObject>();

不使用自定义,Automapper 使用约定来决定这些对象如何相互关联。例如,如果两个对象都有一个名为“CustomerName”的字段,那么很明显应该自动映射这些对象。

还有其他选项可以创建对象可以相互关联的自定义方式。例如,在我们的 DTO 中,我们可能只想有“CustomerName”,但在我们的域模型中,我们有“FirstName”和“LastName”。我们可以创建一个特殊的映射配置来在映射对象时自动连接这两者。

在此处查看 Automapper 的文档:https ://github.com/AutoMapper/AutoMapper/wiki

于 2013-11-01T02:38:28.157 回答