簡體   English   中英

使用帶有元組的 open generics 在 AutoMapper 10 中不起作用

[英]Using open generics with tuples is not working in AutoMapper 10

我有以下兩個 POCO:

private class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

private class PersonDto
{
    public string Name { get; set; }
    public int Age { get; set; }
}

然后我定義了兩個人:

private readonly Person _person1 = new Person
{
    Name = "Steve",
    Age = 20
};

private readonly Person _person2 = new Person
{
    Name = "Alex",
    Age = 45
};

這是我嘗試執行的代碼:

var mapper = new MapperConfiguration(m =>
{
    m.CreateMap<Person, PersonDto>().ReverseMap();
    m.CreateMap(typeof(Tuple<>), typeof(Tuple<>)).ReverseMap();
}).CreateMapper();

var tuple = Tuple.Create(_person1, _person2);
var mappedTuple = mapper.Map<Tuple<PersonDto, PersonDto>>(tuple);

在執行時,我收到一個 AutoMapperMappingException,說我缺少 map 類型配置或不支持映射。 我希望我可以利用開放的 generics 功能,而不必注冊每個 Tuple 版本。 如果我明確地這樣做,那么一切正常。 我錯過了什么嗎?

我正在使用 AutoMapper v10。

這是因為您沒有指定 Tuple 的 generics

var mapper = new MapperConfiguration(m =>
{
    m.CreateMap<Person, PersonDto>().ReverseMap();
    m.CreateMap(typeof(Tuple<Person, Person>), typeof(Tuple<PerdonDto,PersonDto>)).ReverseMap();
}).CreateMapper();

var tuple = Tuple.Create(_person1, _person2);
var mappedTuple = mapper.Map<Tuple<PersonDto, PersonDto>>(tuple);

編輯

正確的做法是:

var mapper = new MapperConfiguration(m =>
    {
        m.CreateMap<Person, PersonDto>().ReverseMap();
        m.CreateMap(typeof(Tuple<,>), typeof(Tuple<,>)).ReverseMap();
    }).CreateMapper();
    
    var tuple = Tuple.Create(_person1, _person2);
    var mappedTuple = mapper.Map<Tuple<PersonDto, PersonDto>>(tuple);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM