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,这将在下一个版本中修复!
鉴于以下 类
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,这将在下一个版本中修复!