【发布时间】:2020-03-08 15:28:53
【问题描述】:
我有以下课程:
class Foo
{
public int X[];
public int Y[];
public int Z[];
}
class Bar
{
public int X;
public int Y;
public int Z;
}
我希望创建以下 AutoMapper 地图:
CreateMap<Foo, IEnumerable<Bar>>
这是将单个Foo 对象映射到Bar 的集合,这样Foo.X[i] 和Foo.Y[i] 将映射到Bar[i].X 和Bar[i].Y。数组将始终具有相同的长度。使用内置功能的 AutoMapper 是否可以做到这一点?理想情况下,我希望避免以编程方式显式映射每个成员。
作为额外的奖励,我还希望使用RecognizePostfixes("Postfix") 和以下版本的Foo 支持源上的后缀:
class Foo
{
public int XPostfix[];
public int YPostfix[];
public int ZPostfix[];
}
【问题讨论】:
-
用LINQ写,如果有重复,加AM。
-
@LucianBargaoanu 您能否发布这将如何作为答案,因为如果不明确指定源成员数组,我无法看到如何使用 LINQ 实现它?我目前正在使用反射处理
ITypeConverter解决方案,但我觉得 AutoMapper 仍然应该是其中的一部分,特别是因为我刚刚添加的关于后缀的问题的最后一部分。我基本上想以任何必要的方式进行映射,同时仍然利用ResolutionContext中的任何 AutoMapper 配置。 -
ZipLINQ 运算符在这里提供帮助。
标签: c# arrays collections automapper transpose