2012-01-30 3 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

Конвертер пользовательского типа должен работать нормально. Вот краткий пример (сбитый вместе - не проверенный). Кроме того, я добавил свойство «Length» в 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

Смежные вопросы