在 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 消息,提示我缺少类型映射配置或映射不受支持。
我希望我可以利用开放泛型特性,而不必注册每个 Tuple 版本。如果我明确地这样做,那么一切正常。我错过了什么吗?
我正在使用 AutoMapper v10。
因为你没有指定元组的泛型
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);
我有以下两个 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 消息,提示我缺少类型映射配置或映射不受支持。 我希望我可以利用开放泛型特性,而不必注册每个 Tuple 版本。如果我明确地这样做,那么一切正常。我错过了什么吗?
我正在使用 AutoMapper v10。
因为你没有指定元组的泛型
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);