1

或者是否有其他解决方案...我的解释如下:我有一个名为 Customer 的类型化对象(例如),它有很多属性,我想将它映射到动态 Expando 对象或 IDictionary。我的意思是这将是理想的解决方案,但第二种类型也可以是静态类型。但无论如何,这里有更多细节:

src 对象将是

Customer
  -> Name
  -> LastName
  -> DOB
  -> FirstPurchaseDate
  -> LastVisitHompage

还有什么 20 属性...

现在我想使用一个字典来定义我的属性名称映射。

Name     = Line1TextField
LastName = Line17TextField
DOB      = Line3DateField
...

等等

现在我想传入 src 对象(我的客户)并根据我的定义字典取出具有属性的 expando 对象。

我认为首先我可以在 foreach 循环中使用 ForMember 方法,但 ForMember 是使用 lambda 表达式进行强类型化的。所以像 ForMember(IDictrionary) 或 ForMember(string, string) 这样的东西不存在给成员映射一些命名提示

我不得不承认,我对 AutoMapper 的了解还不够多(但在对象映射方面听过很多好东西)。那么我的用例是我会使用 AutoMapper 的情况吗?

我可以将第二种类型也设为静态类型,因为我认为 AutoMapper 不适用于动态类型。但核心问题更多的是我可以在字典中定义我的成员字符串映射还是从 xml 读取它以将其传递给我的映射?这有意义吗?是否有其他方法来定义我的映射,而无需手动连接所有类的所有成员?

或者我只是在我的映射字典上写了一些左右代码?有一些反思或表达?

抱歉,我现在不能更精确或有任何代码......

感谢您的帮助或意见?

4

1 回答 1

1

在进行了更多研究并与Twitter 上 AutoMapper 的作者Jimmy Bogard进行了愉快的交谈之后。我意识到 AutoMapper 的主要目的和用途是在目标对象和源对象命名约定相同的情况下映射对象。

或者至少当您能够定义约定时。由于在我的示例中并非如此,因此 AutoMapper 对此没有太大用处。所以我最终编写了自己的投影代码。

于 2013-08-20T12:41:46.077 回答