Retrouvez moi sur :
Mon Espace Developpez.com------------------------------- Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code---------------------------- Twitter: NatMarchand
Ma société: So@t
Showrizo : Suivez votre planning de séries télé sous Windows 8
Ah non ! MEF permet de charger les modules au moment où tu en auras vraiment besoin. Dans le ien que je t'avais fourni on en parle ici.
mais ne vous inquiétez pas, je lis, je lis et je relis toutes les docs que j'ai... ça commence un peu a rentrer...
Par contre il reste quand même certaines questions... par exemple j'ai 2 classe qui "attendent" des modules par exemple :
et dans ma classe program je fais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class ObjetA { [importMany(typeof(ModuleObjA))] Lazy<...> modules } public class ObjetB { [importMany(typeof(ModuleObjB))] Lazy<...> modules }
Est ce qu'il va automatiquement, peu importe l'objet (A ou B), initialiser ma variable "modules" (de mes objets) seulement lorsqu'il en aura besoin ? je n'ai rien à faire de plus ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ... container.ComposeParts(this); foreach (var module in objA.modules) { ... } foreach (var module in objB.modules) { ... }
Normalement oui il va automatique instancier ta liste modules.
Tu peux tester pour être sûr de toi
On ça marche, j'ai reussi à ajouter un module qui ajoute un element dnas mon treeview...
j'ai donc un viewModel qui contient tous les fils (modules) de mon treeview et une view qui m'affiche mon treeview...
et maintenant ? car avant (sans MEF), dans mon xaml de la vue, en fonction de ce qui était selectionné dans le treeview j'affiché un dataTemplate de détail à droite du treeview...
Sauf que là je ne peux pas les rajouter dans le xaml sinon aucun intéret a avoir MEF... comment je fais pour "importer" les vue de modele et l'afficher là ou je veux ?
Alors en fait j'ai deux questions maintenant :
- d'abord (cf post précédent), si mes "modules" (autres assemblies) sont des ViewModel... comment charger les views associées qui sont aussi dans ces nouvelles assemblies)?
- ensuite dans tous les tuto/exemple on a toujours l'initialisation dans Program.. or ça ne m'arrange pas. En effet si je veux charger que mes modules uniquement lorsque j'initialise une/des certaine(s) classe(s) (viewModel), faut il que je remete :
dans chaque constructeur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var container = new CompositionContainer(catalog); container.ComposeParts(thi
ALors j'ai trouvé ce post...
http://stackoverflow.com/questions/8...f-datatemplate
Tout a l'air de fonctionner, cependant ça m'oblige a charger les "views" de tous mes modules au démarrage de l'appli.. ça peut faire long, non ?
Qu'en pensez vous ?
que tu vas pouvoir faire un tutoriel sur developpez.com
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager