我在运行时收到的错误消息是:
找到未映射的成员。在下面查看类型和成员。 添加自定义映射表达式,忽略,添加自定义解析器或修改源/目标类型
对于没有匹配的构造函数,请添加一个无参数ctor,添加可选参数,或映射所有构造函数参数
列表'1-> MobileRoot(目标成员列表) System.Collections.Generic.List'1 [[Strata.CS.Jazz.Biz.Dashboard.MobileInfo,Strata.CS.Jazz.Biz,Version = 2019.10.0.0,Culture = neutral,PublicKeyToken = null]]-> Strata。 Jazz.Web.Controllers.MobileController + MobileRoot(目标成员列表)
未映射的属性: 用户
从错误消息中我可以看出,AutoMapper需要知道如何处理在MobileRoot中创建的ForMember用户,然后将其传播给链上的每个后续列表。谁能告诉我如何使用AutoMapper有效地做到这一点?我知道如何使用GroupBy和Select通过Linq做到这一点,所以我认为这应该可以通过AutoMapper做到。
我的查询返回此类:
public class MobileInfo
{
public string NameFull { get; set; }
public string EmailAddress { get; set; }
public string SolutionName { get; set; }
public int SortOrder { get; set; }
public string Name { get; set; }
public bool IsLegacy { get; set; }
public string Description { get; set; }
public string WidgetName { get; set; }
public int Row { get; set; }
public int Col { get; set; }
public int Height { get; set; }
public int Width { get; set; }
public string WidgetClassName { get; set; }
public string Data { get; set; }
}
我想将Automapper与配置文件一起使用,以使其返回以下内容:
internal class MobileRoot
{
public IEnumerable<MobileUser> Users { get; set; }
}
internal class MobileUser
{
public string NameFull { get; set; }
public string EmailAddress { get; set; }
public IEnumerable<MobileSolution> Solutions { get; set; }
}
internal class MobileSolution
{
public string Solution { get; set; } // MobileInfo.SolutionName
public int SortOrder { get; set; }
public IEnumerable<MobileDashboard> Dashboards { get; set; }
}
internal class MobileDashboard
{
public string Dashboard { get; set; } // MobileInfo.Name
public bool IsLegacy { get; set; }
public string Description { get; set; }
public IEnumerable<MobileWidget> Widgets { get; set; }
}
internal class MobileWidget
{
public string Widget { get; set; } // MobileInfo.WidgetName
public int Row { get; set; }
public int Col { get; set; }
public int Height { get; set; }
public int Width { get; set; }
public string WidgetClassName { get; set; }
public string Data { get; set; }
}
到目前为止,我定义的配置文件是:
public class ProfileMobileRoot : Profile
{
public ProfileMobileRoot()
{
CreateMap<MobileInfo, MobileRoot>();
}
}
public class ProfileMobileUser : Profile
{
public ProfileMobileUser()
{
CreateMap<MobileInfo, MobileUser>();
}
}
public class ProfileMobileSolution : Profile
{
public ProfileMobileSolution()
{
CreateMap<MobileInfo, MobileSolution>();
}
}
public class ProfileMobileDashboard : Profile
{
public ProfileMobileDashboard()
{
CreateMap<MobileInfo, MobileRoot>();
}
}
public class ProfileMobileWidget : Profile
{
public ProfileMobileWidget()
{
CreateMap<MobileInfo, MobileWidget>();
}
}
答案 0 :(得分:0)
您可以执行以下操作。太晚了,所以我的解决方案不是很复杂...但是可以用;)
C