J’étais en train de travailler sur MEF Preview 6 et j’ai rencontré une petite bizarrerie. De nombreux bloggeurs utilisent, lors qu’ils souhaitent importer une série de classes du même type, une ExportCollection. On se retrouve donc avec ce type de code :

[Import(typeof(IApplicationModule))]   
public ExportCollection<iapplicationmodule> Modules { get; set; }

Cette collection se base sur un autre élément apporté par MEF : Export. Si on regarde le changeset de Preview 6, on s’aperçoit de 2 choses :

  • Export<T> est remplacé par Lazy<T>
  • ExportCollection a été supprimé

Hors, ces deux éléments sont bien présents dans la beta 1 du .net framework. Pour importer une “collection”, vous devez donc faire quelque chose du genre :

[ImportMany(typeof(ICalculationsProvider),AllowRecomposition = true)]
public IEnumerable<icalculationsprovider> _providers { get; set; }

Maintenant, vous savez :)