2012-06-04 131 views
4

我有2個對象與屬性如下所示:如何動態地將對象中的字段映射到另一個對象?

對象1:

  • 名稱
  • 位置
  • 年齡
  • 地址

對象2:

PersonRule

  • PERSONNAME
  • PersonLocation
  • 人士

的PersonRule由UI,其中規定一個人規則驅動(可設置多達孔) ,並且用戶說什麼名字,地點,年齡應該是一個規則。如果該人對於屬性具有相同的值,則應該將該規則與人匹配。

我可以做一個簡單的平等檢查,但是也有可能在將來有一個新的屬性被添加到人的規則,就像一個personaddress。然後我需要通過考慮個人地址來檢查規則是否與人匹配。

有沒有一種方法可以構建一些東西,比如將personrule的所有屬性都匹配到person屬性,以便在新屬性被添加到規則時不需要進行更改?當然這是假設相應的屬性在人物對象中可用。

感謝, -Mike

回答

8

您可以使用可用的對象到對象映射器庫之一如AutoMapperEmitMapper。他們將負責將數據從Person實例複製到PersonRule實例,該實例可以與另一個PersonRule實例進行比較。例如,使用EmitMapper,您的代碼可能如下所示:

var config = new DefaultMapConfig().MatchMembers((m1, m2) => "Person" + m1 == m2); 
ObjectMapperManager.DefaultInstance 
        .GetMapper<Person, PersonRule>(config) 
        .Map(person, personRule); 
相關問題