Automapper échouant à mapper sur IEnumerable

J’ai deux cours comme ça:

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

Et

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

Identique, comme vous pouvez le voir (ils implémentent tous les deux l’interface pour garantir cela)

J’ai alors la cartographie suivante:

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

J’ai ensuite le test unitaire suivant:

 //create a load of sent email attachments var listOfSentEmailAttachments = new List(); 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, IEnumerable>(listOfSentEmailAttachments); var itemToTest = sentEmailAttachmentItems.First(); Assert.IsInstanceOfType(itemToTest, typeof(SentEmailAttachmentItem)); 

Cela échoue – Le IEnumerable sentEmailAttachmentItems est vide. Il n’a pas mappé la liste de SentEmailAttachments à elle …

Une idée de ce qui se passe?

Je le fais travailler sur des objects simples (mappant l’un des uns sur l’un de chacun) mais pas sur une collection …

Vous n’avez pas besoin de mapper explicitement les types de collection, mais uniquement les types d’éléments. Fais juste:

 Mapper.CreateMap(); var attachments = Mapper.Map, List>(someList); 

Cela fonctionnera très bien.

EDIT : J’ai trouvé un moyen simple d’utiliser DynamicMap avec des collections.

 IEnumerable unmappedItems = Repository.GetItems(); IEnumerable mappedItems = unmappedItems.Select(Mapper.DynamicMap); 

– Message original –

La façon dont Jimmy dit de l’utiliser fonctionne, mais j’essaie d’utiliser DynamicMap quand je peux pour éviter d’avoir à faire “CreateMap” pour chaque mappage dont j’ai besoin. Je ne pense pas que DynamicMap fonctionne très bien avec les collections, voire pas du tout. Il ne lance pas d’exception, mais le résultat est un ensemble vide.

Depuis les tests des deux derniers jours, vous ne pouvez pas utiliser DynamicMap pour les collections à ce stade (que je connais).