[英]Map a 2nd level nested list property to first level list property with automapper
我需要你的幫助。 我對自動映射器有基本的經驗,並且一切都很好,但是以某種方式,我無法將源對象中的下一個更改映射到目標對象。
讓我解釋一下:
在IUser中,我添加了一個屬性“ UserDetails”,此類包含一個名為“ Domains”的Guid屬性列表。
我想將該第二級列表屬性映射到我的UserDto對象,其中guid屬性的列表位於第一級。 在下面的示例中,Userkey映射工作正常,但是我對'DomainIds'始終保持null,並且看不到我在做錯什么。 我希望你能幫幫我
public interface IUser
{
UserKey Key { get; }
UserDetails Details { get; set; }
FirstName { get; }
}
public struct UserKey
{
private readonly Guid _id;
public UserKey(Guid id)
{
_id = id;
}
}
public class UserDetails
{
public List<Guid> Domains { get; set; }
}
public class UserDto
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public List<Guid> DomainIds { get; set; }
}
映射設置如下:
CreateMap<IUser, UserDto>()
.ForMember(
dest => dest.Id,
opt => opt.MapFrom(src => src.Key.Id))
.ForMember(
dest => dest.DomainIds,
opt => opt.MapFrom(src => src.Details.Domains))
在我的測試中,我這樣映射用戶(這是一個IUser)。 Fyi,所有其他屬性都映射良好
_mapper.Map<UserDto>(user);
您的映射對我來說似乎很好:
Mapper.Initialize(config =>
{
config.CreateMap<User, UserDto>()
.ForMember(
dest => dest.Id,
opt => opt.MapFrom(src => src.Key.Id))
.ForMember(
dest => dest.DomainIds,
opt => opt.MapFrom(src => src.Details.Domains));
});
var user = new User
{
FirstName = "foo",
Key = new UserKey { Id = Guid.NewGuid() },
Details = new UserDetails
{
Domains = new List<Guid> { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid() },
},
};
var result = Mapper.Map<UserDto>(user);
使用以下類型:
public class User
{
public UserKey Key { get; set; }
public UserDetails Details { get; set; }
public string FirstName { get; set; }
}
public class UserKey
{
public Guid Id {get;set;}
}
public class UserDetails
{
public List<Guid> Domains { get; set; }
}
public class UserDto
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public List<Guid> DomainIds { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.