我可以将AutoMapper的ForMember映射命名提示作为字典<string,string>?</string,string>

时间:2013-08-13 14:25:05

标签: c# dynamic mapping automapper expandoobject

还是有其他解决方案...... 我的解释如下: 我有一个名为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(字符串,字符串)不存在,无法为成员映射一些命名提示

我不得不承认我对AutoMapper知之甚少(但在对象映射方面听到很多好事)。 那么我的用例是一个我会使用AutoMapper的情况吗?

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

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

很抱歉,我现在无法更准确或有任何代码......

感谢您的帮助或意见?

1 个答案:

答案 0 :(得分:1)

在Twitter上与AutoMapper的作者Jimmy Bogard进行了一些更好的对话。我意识到AutoMapper的主要目的和用途是在目标对象和源对象命名约定相同时映射对象。

或者至少在您能够定义约定时。 由于在我的示例中不是这种情况,因此AutoMapper对此并不那么有用。所以我最终编写了自己的投影代码。