Bonjour,
J'ai découvert que EntLib4 avait rattrapé Spring.Net avec l'Injecteur de dépendances "Unity".
J'ai fait un essais concluant, juste que la syntaxe des déclarations m'échappe un peu.
En fait je me demande pourquoi les objets sont déclarés dans la section "types" et pas dans la section "instances" ?? Du coup je trouve le schéma de Unity bien plus compliqué que celui de Spring.Net
Je n'ai surement pas tout compris, c'est pourquoi je pose la question ici.
Voici le bout de xml et le bout de code C# qui fonctionne ;
Le bloque de déclaration dans App.config:
Le code pour instancier le bazar :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 <unity> <containers> <container> <types> <type type="UnityTest01.IVehicule, UnityTest01" mapTo="UnityTest01.Moto, UnityTest01" name="uneMoto" /> <type type="UnityTest01.IVehicule, UnityTest01" mapTo="UnityTest01.Voiture, UnityTest01" name="uneVoiture" /> <type type="UnityTest01.Coursier, UnityTest01" mapTo="UnityTest01.Coursier, UnityTest01" name="Marcel"> <typeConfig > <property name="Vehicule" propertyType="UnityTest01.IVehicule, UnityTest01"> <dependency name="uneVoiture" /> </property> </typeConfig> </type> <type type="UnityTest01.Coursier,UnityTest01" mapTo="UnityTest01.Coursier, UnityTest01" name="Antoine"> <typeConfig > <property name="Vehicule" propertyType="UnityTest01.IVehicule,UnityTest01"> <dependency name="uneMoto" /> </property> </typeConfig> </type> </types> <instances> </instances> </container> </containers> </unity>
Et ça fonctionne ! ;-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 UnityContainer container = new UnityContainer(); UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); section.Containers.Default.Configure(container); Coursier coursierMarcel = container.Resolve<Coursier>("Marcel") as Coursier; Debug.WriteLine("coursierMarcel.Vehicule.WheelsCount: " + coursierMarcel.Vehicule.WheelsCount); this.textBox1.AppendText(String.Format("Marcel est équipé d'un véhicule à {0} roues.", coursierMarcel.Vehicule.WheelsCount) + Environment.NewLine); Coursier coursierAntoine = container.Resolve<Coursier>("Antoine") as Coursier; Debug.WriteLine("coursierAntoine.Vehicule.WheelsCount: " + coursierAntoine.Vehicule.WheelsCount); this.textBox1.AppendText(String.Format("Antoine est équipé d'un véhicule à {0} roues.", coursierAntoine.Vehicule.WheelsCount) + Environment.NewLine);
Rappel de la question : pourquoi les objets sont déclarés dans la section "types" et pas dans la section "instances" ?
Cyrille.
Partager