tutorial standard net mvc imapper framework example custom c# automapper

c# - standard - Automapper no logra mapear en IEnumerable



imapper c# (2)

No es necesario mapear explícitamente los tipos de colección, solo los tipos de elementos. Solo haz:

Mapper.CreateMap<SentEmailAttachment, SentEmailAttachmentItem>(); var attachments = Mapper.Map<IEnumerable<SentEmailAttachment>, List<SentEmailAttachmentItem>>(someList);

Eso funcionará bien.

Tengo dos clases así:

public class SentEmailAttachment : ISentEmailAttachment { public SentEmailAttachment(); public string FileName { get; set; } public string ID { get; set; } public string SentEmailID { get; set; } public string StorageService { get; set; } public string StorageServiceFileID { get; set; } }

Y

public class SentEmailAttachmentItem : ISentEmailAttachment { [ItemName] public string ID { get; set; } public string SentEmailID { get; set; } public string FileName { get; set; } public string StorageService { get; set; } public string StorageServiceFileID { get; set; } }

Idéntico, como puede ver (ambos implementan la interfaz para asegurar esto)

Luego tengo la siguiente asignación:

Mapper.CreateMap<IEnumerable<SentEmailAttachmentItem>, IEnumerable<SentEmailAttachment>>(); Mapper.CreateMap<IEnumerable<SentEmailAttachment>, IEnumerable<SentEmailAttachmentItem>>();

Luego tengo la siguiente prueba de Unidad:

//create a load of sent email attachments var listOfSentEmailAttachments = new List<SentEmailAttachment>(); for (int i = 0; i < 10; i++) listOfSentEmailAttachments.Add(new SentEmailAttachment { FileName = "testFileName", ID = Guid.NewGuid().ToString(), SentEmailID = Guid.NewGuid().ToString(), StorageService = "S3", StorageServiceFileID = "SomeFileID" }); var sentEmailAttachmentItems = Mapper.DynamicMap<IEnumerable<SentEmailAttachment>, IEnumerable<SentEmailAttachmentItem>>(listOfSentEmailAttachments); var itemToTest = sentEmailAttachmentItems.First(); Assert.IsInstanceOfType(itemToTest, typeof(SentEmailAttachmentItem));

Esto falla: IEnumerable sentEmailAttachmentItems está vacío. No correlacionó la lista de SentEmailAttachments con ella ...

¿¿Tienes idea de lo que está pasando??

Lo tengo trabajando en objetos individuales (mapeando uno de cada uno a uno) pero no una colección ...


EDIT : encontré una manera fácil de usar DynamicMap con colecciones.

IEnumerable<FakeItem> unmappedItems = Repository.GetItems(); IEnumerable<MappedItem> mappedItems = unmappedItems.Select(Mapper.DynamicMap<MappedItem>);

- Mensaje original -

La forma en que Jimmy dice que lo use funciona, pero trato de usar DynamicMap cuando puedo para evitar tener que hacer "CreateMap" para cada asignación que necesito. No creo que DynamicMap funcione muy bien con las colecciones, en todo caso. No arroja una excepción, pero el resultado es un conjunto vacío.

De las pruebas de los últimos días, no puede usar DynamicMap para colecciones en este momento (que yo sepa).