Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier Avatar de cyrille37
    Inscrit en
    juin 2005
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 148
    Points : 102
    Points
    102

    Par défaut [EntLib4] déclaration des objets avec Unity

    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:
    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>
    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
     
                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);
    Et ça fonctionne ! ;-)

    Rappel de la question : pourquoi les objets sont déclarés dans la section "types" et pas dans la section "instances" ?

    Cyrille.

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : janvier 2005
    Messages : 2 745
    Points : 8 530
    Points
    8 530

    Par défaut

    Je suppose que Type c'est pour enregistrer mapper un type à un autre (mapper par exemple un IToto à un Toto).
    Quand tu fais un container.Resolve<IToto> il te renvoie un objet de type Toto.

    Instance ça doit être pour mapper un type à une instance précise.
    Quand tu lui demande le type A il te renvoie l'instance que tu as enregistrés, et pas une nouvelle.

    Sinon tu as lu la doc, ça doit être expliqué dedans ?


      • If you used the RegisterType method to register a type, Unity will create a new instance of the registered type during the first call the Resolve or ResolveAll method or when the dependency mechanism injects instances into other classes based on attributes or constructor parameters within that class. Subsequent requests will return the same instance.
      • If you used the RegisterInstance method to register an existing object, Unity will return this instance every time you call to the Resolve or ResolveAll method or when the dependency mechanism injects instances into other classes based on attributes or constructor parameters within that class.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

Discussions similaires

  1. Pinner des Objets avec DBMS_SHARED_POOL
    Par ilalaina dans le forum Administration
    Réponses: 2
    Dernier message: 15/11/2007, 11h03
  2. Placer des objets avec swing
    Par crossbowman dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 22/08/2007, 23h05
  3. Créer des objets avec Java Monkey Engine
    Par ToTo13 dans le forum 3D
    Réponses: 3
    Dernier message: 31/07/2007, 15h06
  4. [FLASH] Déplacement des objets avec clavier ???
    Par 3adoula dans le forum Flash
    Réponses: 1
    Dernier message: 07/01/2006, 01h03
  5. [Convention]déclarations des objets
    Par allstar dans le forum Langage
    Réponses: 4
    Dernier message: 17/11/2005, 00h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo