看了Automapper attributes之后我试图回答this question,所以我做了一个快速的控制台应用程序来重现行为。我在GitHub文档的第一个例子中添加了(复制粘贴)类:
[MapsTo(typeof(Customer))]
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Notes { get; set; }
}
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string MyCustomerNotes { get; set; }
}
并在主要内容中添加了相同的陈述:
typeof(Program).Assembly.MapTypes(); //this throws exception
var person = new Person { FirstName = "John", LastName = "Lackey" };
var customer = AutoMapper.Mapper.Map<Customer>(person);
但是在main的第一行代码中,当调用MapTypes
方法时,抛出了类型 TypeInitializationException 的异常:
未处理的类型&#39; System.TypeInitializationException&#39;发生在ConsoleApplication.exe
中
附加信息:&#39; AutoMapper.Attributes.Extensions&#39;的类型初始值设定项。抛出异常。
为什么抛出此异常,因为我已按照文档中的所有说明进行操作?
内部例外是:
{&#34;序列不包含匹配元素&#34;}
注:
我正在使用AutoMapper版本5.1.1和AutoMapper.Attributes版本1.0.20。
答案 0 :(得分:1)
看起来您正在使用Automapper 5,但Automapper.Attributes
似乎只适用于版本4.我尝试使用版本4,它按预期工作。
问题似乎是方法签名发生变化,通过Attributes.Extensions