2012-01-30 43 views
0

我需要映射ICustomerAddresses我自己的自定義對象地址,或名單<地址>。我如何使用automapper來指示Customer.ICustomerAddresses屬性映射到我的自定義地址?Automapper地圖物業作爲收藏

要的附圖示出,我有一個具有這樣列出的屬性的接口:

public interface ICustomer 
{ 
    ICustomerAddresses Addresses; 
} 

在這種情況下,ICustomerAddresses是ICustomerAddress的集合。然而,ICustomerAddress不是一個簡單的IEnumerable的,它包含了包含集合,這樣的性質:

public interface ICustomerAddresses : IBusinessObjectCollection 
    { 
    ICustomerAddress this[int nIndex] { get; } 

    ICustomerAddress CreateNew(); 

    ICustomerAddress AddNew(); 

    } 

Automapper無法弄清楚它自己的那ICustomerAddresses真的只是一個ICustomerAddress的集合,因此如何我能告訴它情況如何嗎?

在此先感謝!

回答

0

自定義類型轉換器應該工作正常。這裏有一個簡單的例子(一起扔 - 沒有測試過)。此外,我添加了一個「長度」屬性設置爲ICustomerAddresses,所以我知道有多少通過循環:

public class AddressConverter : TypeConverter<ICustomerAddresses, IList<Address>> 
{ 
    protected override IList<Address> ConvertCore(ICustomerAddresses source) 
    { 
     var addresses = new List<Address>(); 
     for (var i = 0; i < source.Length; i++) 
     { 
      var addr = source[i]; 
      addresses.Add(new Address 
          { 
           Addr1 = addr.Addr1, 
           Zip = addr.Zip 
          }); 
     } 

     return addresses; 
    } 
} 

而且你很可能利用Automapper內循環過的ICustomerAddress轉換爲Address,而不是做手工像我一樣。

+0

感謝您的回覆。我會給你一個機會,回覆你。 – letsgetsilly 2012-02-05 15:44:06