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 :)
Julien 3:47 pm on July 22, 2009 Permalink
Mwé, casiment annoncé sur mon topic de MEF pour SV mais bon :p
Chris 3:54 pm on July 22, 2009 Permalink
Mwé, tu a montré l’exemple, sans expliquer le changement ni pourquoi :p
Sebastien Warin 6:01 pm on July 22, 2009 Permalink
Ce qu’il faut surtout comprendre c’est que la lib MEF fourni dans la beta 1 de .NET 4.0 est la version “Preview 5″ !!!!
Quant aux différences entre la preview 5 (celle de .net4 beta1) et la preview 6, la liste complete est ici : http://mef.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=30098
Julien Corioland 9:20 am on July 23, 2009 Permalink
Ah ça va au final la modif est minime, j’avoue que tu m’as fait un peu peur hier quand on en a parlé :)
J’attends de voir ce qui arrivera réellement avec le .NET Fx 4 et je reste avec mon ExportCollection pour l’instant :)
Merci pour l’info en tout cas !