类型为'System.TypeInitializationException'发生在ConsoleApp

本文关键字:ConsoleApp System 类型 TypeInitializationException | 更新日期: 2023-09-27 18:14:56

在查看了Automapper的属性后,我试图回答这个问题,所以我制作了一个快速控制台应用程序来重现该行为。我在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; }
}

并在main中添加了相同的语句:

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的异常:

类型为"System"的未处理异常。TypeInitializationException'发生在ConsoleApplication.exe

附加信息:"AutoMapper.Attributes"的类型初始化项。扩展抛出了一个异常。

既然我遵循了文档中的所有说明,为什么会抛出这个异常?

内部异常是:

{"序列不包含匹配的元素"}

注意:

我正在使用AutoMapper版本5.1.1和AutoMapper。属性1.0.20.

类型为'System.TypeInitializationException'发生在ConsoleApp

看起来您正在使用Automapper 5,但是Automapper.Attributes似乎只与版本4一起工作。我在第4版上尝试了一下,效果和预期的一样。

问题似乎是一个方法签名改变了,这是通过反射在Attributes.Extensions

查找