AutoMapper无法识别我的构造函数

时间:2015-12-17 09:43:01

标签: automapper

鉴于以下课程

public class FirstFoo {
    public string Bar { get; }
    public string Baz { get; }

    public FirstFoo(string bar, string baz)
    {
        Bar = bar;
        Baz = baz;
    }
}

public class SecondFoo {
    public string Bar { get; }
    public string Baz { get; }

    public SecondFoo(string bar, string baz)
    {
        Bar = bar;
        Baz = baz;
    }
}

和以下映射定义

Mapper.CreateMap<FirstFoo, SecondFoo>();

我原本期望Mapper.Map<SecondFoo>(firstFooInstance)加入Just Work(TM),但会引发ArgumentException

  

System.ArgumentException:输入&#39; SecondFoo&#39;没有默认构造函数

我在这里做错了吗?

免责声明:我们仍在使用AutoMapper 2.2.1。我已经仔细阅读change log来确定此功能是否在以后的版本中引入,但我在搜索&#34;构造函数时只发现了错误修正或其他改进。在所有条目中,2.2.1及更早版本在更改日志中没有任何详细信息,因此我甚至无法确认 应该工作。 (是的,我知道这是一个非常旧的版本。我正在考虑更新到大型企业解决方案中的最新版本,但这不是优先考虑的问题。它可能会成为一个,如果它解决了这个问题,但我不会花时间在它上面以防万一......)

1 个答案:

答案 0 :(得分:0)

哇,这有点尴尬。显然,我映射到的类型有一个属性,我从中映射的类型没有,这意味着没有办法填充所有构造函数参数。我完全被关于没有默认构造函数的错误消息抛弃了(如果我映射到可变属性,AutoMapper会抱怨无效映射并给我一个关于哪个属性丢失的提示......)。

更新:我提交了issue with AutoMapper,这将在下一个版本中修复!