AutoMapper 无法识别我的构造函数

AutoMapper doesn't recognize my constructor

鉴于以下 类

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: Type 'SecondFoo' does not have a default constructor

我是不是做错了什么?

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

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

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