automapper 将具有通用列表的 class 映射到具有不同通用列表的相同 class
automapper map class with generic list to same class with a different generic
我有这个class:
public class PagedListResult<T>
{
public int RecordCount {get; set;}
public int PageNumber {get; set;}
public int PageSize {get; set;}
public IEnumerable<T> Records {get; set;}
}
现在基本上我希望能够创建将我的 EF
实体映射到我的 Dto
模型的映射器,示例:
public class UserEntity
{
public int Id {get; set;}
public string Name {get; set;}
}
public class UserDto
{
public int Id {get; set;}
public string Name {get; set;}
}
在我的 BLL
class:
//other code
PagedListResult<UserEntity> result = _repo.GetUsers();
var pagedListOfDtos = Mapper.Map<PagedListResult<UserDto>>(result);
return pagedListOfDtos;
//other code
我已经在 UserEntity
和 UserDto
之间创建了 Map
但显然我遗漏了什么?
您还需要创建 PagedListResult<UserEntity>
和 PagedListResult<UserDto>
之间的映射,然后此测试通过:
[SetUp]
public void Setup()
{
Mapper.CreateMap<UserEntity, UserDto>();
Mapper.CreateMap<PagedListResult<UserEntity>, PagedListResult<UserDto>>();
}
[Test]
public void Q33128288()
{
PagedListResult<UserEntity> result = new PagedListResult<UserEntity>
{
Records = new List<UserEntity> {new UserEntity {Id = 7}},
RecordCount = 1
};
var pagedListOfDtos = Mapper.Map<PagedListResult<UserDto>>(result);
Assert.AreEqual(1, pagedListOfDtos.RecordCount);
Assert.AreEqual(1, pagedListOfDtos.Records.Count());
Assert.IsInstanceOfType(typeof(UserDto), pagedListOfDtos.Records.Single());
Assert.AreEqual(7, pagedListOfDtos.Records.Single().Id);
}
我有这个class:
public class PagedListResult<T>
{
public int RecordCount {get; set;}
public int PageNumber {get; set;}
public int PageSize {get; set;}
public IEnumerable<T> Records {get; set;}
}
现在基本上我希望能够创建将我的 EF
实体映射到我的 Dto
模型的映射器,示例:
public class UserEntity
{
public int Id {get; set;}
public string Name {get; set;}
}
public class UserDto
{
public int Id {get; set;}
public string Name {get; set;}
}
在我的 BLL
class:
//other code
PagedListResult<UserEntity> result = _repo.GetUsers();
var pagedListOfDtos = Mapper.Map<PagedListResult<UserDto>>(result);
return pagedListOfDtos;
//other code
我已经在 UserEntity
和 UserDto
之间创建了 Map
但显然我遗漏了什么?
您还需要创建 PagedListResult<UserEntity>
和 PagedListResult<UserDto>
之间的映射,然后此测试通过:
[SetUp]
public void Setup()
{
Mapper.CreateMap<UserEntity, UserDto>();
Mapper.CreateMap<PagedListResult<UserEntity>, PagedListResult<UserDto>>();
}
[Test]
public void Q33128288()
{
PagedListResult<UserEntity> result = new PagedListResult<UserEntity>
{
Records = new List<UserEntity> {new UserEntity {Id = 7}},
RecordCount = 1
};
var pagedListOfDtos = Mapper.Map<PagedListResult<UserDto>>(result);
Assert.AreEqual(1, pagedListOfDtos.RecordCount);
Assert.AreEqual(1, pagedListOfDtos.Records.Count());
Assert.IsInstanceOfType(typeof(UserDto), pagedListOfDtos.Records.Single());
Assert.AreEqual(7, pagedListOfDtos.Records.Single().Id);
}