当前位置: 首页 > 编程语言 > C#

AutoMapper地图中foreach中的额外迭代分享

时间:2023-04-11 11:43:06 C#

C#学习教程:AutoMapper地图中Foreach中的额外迭代地图定义:Mapper.CreateMap().BeforeMap((s,d)=>{foreach(varplatIdins.PlatformIDs){PlatformnewPlat=_gameRepository.GetPlatform(platId);d.Platforms.Add(newPlat);}}).ForMember(dest=>dest.BoxArtPath,opt=>opt.Ignore()).ForMember(dest=>dest.IndexImagePath,opt=>opt.Ignore()).ForMember(dest=>dest.Cons,opt=>opt.MapFrom(src=>String.Join("|",src.Cons))).ForMember(dest=>dest.Pros,opt=>opt.MapFrom(src=>String.Join("|",src.Pros))).ForMember(dest=>dest.LastModified,opt=>opt.UseValue(DateTime.Now)).ForMember(dest=>dest.Platforms,opt=>opt.Ignore());由于某些原因,BeforeMap的foreach会多次遍历s.PlatformIDs数组。因此,例如,如果它包含两个值,我将在两个期望值重复的地方进行六次或更多次迭代。PlatformID未定义为二维数组,调试器确认该数组仅包含应有的值,没有重复集。我不知道是什么原因造成的。编辑:通过循环,我有以下断点-.BeforeMap((s,d)=>{foreach(varplatIdins.PlatformIDs)//断点1{PlatformnewPlat=_gameRepository.GetPlatform(platId);//断点2d.Platforms.Add(newPlat);}//断点3})第一遍正常-断点1->断点2->断点3。然后它会回到2,然后是3,这是预期的。奇怪的是它跳回到断点1并重新开始整个过程??。我不确定是否有模式。两个数组值导致六次通过。数组值导致四次传递。编辑2:我的直觉是正确的-BeforeMap触发。编辑3:问题也存在于AfterMap中。每个映射都会执行多次此方法。从以下内容判断,这似乎是一个合法的错误:http://automapper.codeplex.com/workitem/6604。我在AutoMapper的GitHub上将其写为一个问题并将此问题链接到此问题,以便开发人员可以看到我正在尝试做什么。以上就是C#学习教程的全部内容:AutoMappermapforeach中的extraiteration。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢