我遇到了自动播放器的问题。我不知道如何做到这一点,并一直在寻找和尝试不同的解决方案。如果有人可以帮助我,我将不胜感激。
所以这是问题,我有两种源类型,如下所示:
public class User
{
public string Name {get; set;}
public int Id {get; set;}
}
public class Product
{
public int UserId {get; set;}
public int Id {get; set;}
public double Price{get; set;}
}
我想将这两个映射到UserData类型的目标:
public class UserData
{
public string UserName{get; set;}
public int UserId {get;set;}
public List<Product> PurchasedProducts {get; set;}
}
由于
答案 0 :(得分:0)
我使用自定义值解析器进行了此操作。但我不认为它是最好的解决方案,因为解析器直接依赖于存储库。无论如何,这就是我所做的:
Mapper.CreateMap<Product, Dtos.Product>();
Mapper.CreateMap<User, UserData>()
.ForMember(dest => dest.UserName, opt => opt.MapFrom(src => src.Name))
.ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.Id))
.ForMember(dest => dest.PurchasedProducts, opt =>
opt.ResolveUsing<User_Products_Resolver>());
Mapper.AssertConfigurationIsValid();
我按如下方式实现了自定义解析器:
public class User_Products_Resolver : ValueResolver<User, List<Product>>
{
protected override List<Product> ResolveCore(User userObj)
{
var productRepo = new ProductRepository();
var r = productRepo.Get(p => p.UserId == userObj.Id)
.ToList<Product>();
return r;
}
}
同样,我不确定这是否是正确的方法。如果有人知道更好的方法,请告诉我。
感谢