Formations .NET – Audit, Conseil, Développement
Articles gratuits à télécharger www.e-naxos.com
Dot.Blog, le blog www.e-naxos.com/blog
© Copyright 2011 Olivier DAHAN
MICROSOFT MVP Silverlight 2011, MVP Client App Dev 2010, MVP C# 2009
Reproduction, utilisation et diffusion interdites sans l’autorisation de l’auteur. Pour plus d’information contacter odahan@e-naxos.com
Sommaire
Code Source 4
Préambule 5
MEF – Le besoin 6
Du lego, pas un puzzle ! 8
MEF et MVVM 9
Principes de base : Exportation, Importation, Composition 10
L’exportation 11
L’importation 12
La composition 13
L’esprit de MEF 13
Les métadonnées 14
Exportation de métadonnées 15
Importation de métadonnées 15
Les métadonnées personnalisées 15
Point intermédiaire 16
Exemples pratiques 16
Le Hello World de MEF 16
Les namespaces 16
Le visuel 17
Le code 17
Gestion de plusieurs modules et métadonnées 19
Le visuel 20
Le principe de fonctionnement 20
Le Code 21
La MainPage 21
Le code C# de MainPage 22
Le code des modules 23
Point Intermédiaire 25
Métadonnées fortement typées 25
Digression 26
Binder le Background d’un UserControl à l’un de ses éléments 26
Colors n’est pas une énumération 28
Fin des digressions 29
Métadonnées via une Interface 29
Ajout de la seconde métadonnée 29
Création de l’interface des métadonnées 29
Modifier l’importation 30
Modification de la séquence d’affichage 30
Filtrage des métadonnées 30
Point intermédiaire 31
Attribut d’exportation personnalisé 31
Point intermédiaire 33
Organiser les déclarations 33
Les différentes exportations 34
Exportation de parties composables 34
Exportation de propriétés 34
Exportation de méthodes 35
Les exportations héritables 36
Public ou Private ? 36
Lazy<T> et le chargement différé 37
Chargement différé immédiat 38
MEF, MVVM et Chargement Dynamique de XAP 39
Le projet 40
Le projet en action 41
Ce que nous n’étudierons pas 44
ListBox 45
ComboBox 45
Par où commencer ? 45
Prism, MEF, Jounce, Unity, MVVM Light, Caliburn ? 46
MVVM Light 46
Prism 46
MEF 46
Unity 47
Jounce 47
Caliburn.Micro 47
L’heure du choix 47
L’architecture globale 48
Le partage des tâches 48
L’organisation de la solution 49
Le code de l’exemple 49
Les contrats 49
IWidgetBehavior 50
WidgetInfo 51
WidgetArea 51
IWidgetMetaData 52
WidgetExportAttribute 52
Le Shell 53
IDeploymentService 54
DeploymentCatalogService 55
MainPage 57
Les Bindings de la MainPage 59
MainPageViewModel 59
Le Widget1 61
Visuel et binding 61
Le code-behind 62
Le problème de l’interface métier 63
Widget1ViewModel 66
Le chargement dynamique 67
Les premières extensions 67
Catalogue de modules 69
Chargement du catalogue 70
Les extensions supplémentaires 72
Conclusion 73
Table des figures
Figure 1 - L'application idéale 7
Figure 2 - Dans la vraie vie... 7
Figure 3 - Une application est faite de "parties" 9
Figure 4 - Le principe d'exportation 11
Figure 5 - le principe d'importation 12
Figure 6 - le principe de composition 13
Figure 7 - Hello MEF ! 17
Figure 8 - Hello MEF (clic) 17
Figure 9 - Modules multiples 20
Figure 10 - DynamicXAP - Le Shell au lancement 41
Figure 11 - DynamicXAP - Chargement des extensions 42
Figure 12 - DynamicXAP - Le rôle utilisateur 43
Figure 13 - DynamicXAP - Rôle Administrateur 43
Figure 14 - DynamicXAP - Rôle Anonyme 44
Figure 15 - Widget1 - Visuel 62
Figure 16 - Widget2 de Extensions.XAP 68
Figure 17 - Widget3 de Extensions.XAP 68
Figure 18 - Widget4 72
Figure 19 - Widget5 73
Code Source
Cet article est accompagné du code source complet des exemples. Si vous le recevez sans ces derniers il s’agit d’une copie de seconde main. Téléchargez l’original sur www.e-naxos.com.
Décompressez le fichier Zip dans un répertoire de votre choix. Attention les projets nécessitent Silverlight 4 et Visual Studio 2010 au minimum. Le dernier exemple utilise le toolkit MVVM Light de Laurent Bugnion.
Projets fournis
Exemple1 « HelloWord » , Importation de propriété et de champs
Exemple2 « MultipleModules », Importation de plusieurs modules
Exemple3 « TypedMetaData », Métadonnées fortement typées
Exemple4 « CustomAttribute », Attribut d’exportation personnalisé
Exemple5 « DynamicXap », Chargement dynamique et MVVM
Le livre blanc peut être téléchargé à l'adresse suivante: http://www.e-naxos.com/Blog/post/MEF-et-Silverlight-(article-a-telecharger).aspx