IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Dotnet Discussion :

[Unity] problème de débutant


Sujet :

Dotnet

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 36
    Points : 85
    Points
    85
    Par défaut [Unity] problème de débutant
    Bonjour.

    Je débute avec Unity, et j'ai un problème que je n'arrive pas à résoudre (peut être même que c'est le comportement normal en fait)

    J'ai une solution composée de 3 projets :
    -ILib qui contient une interface ILogger
    -LibImpl1 qui contient la classe CLogger qui implémente ILogger
    -ProtoUnity01 qui est mon application, qui référence ILib et ou j'utilise Unity

    Mon but est dans ProtoUnity01 de récupérer un ILogger depuis Unity
    Voici ce que contient mon fichier de config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
        <alias alias="ILogger" type="ILib.ILogger, ILib" />
        <alias alias="CLogger" type="LibImpl1.CLogger, LibImpl1"/>
        <namespace name="ProtoUnity01" />
        <assembly name="ProtoUnity01" />
     
        <container>
          <register type="ILogger"  mapTo="CLogger">
            <lifetime type="singleton"/>
          </register>     
        </container>
      </unity>
    J'ai l'erreur :
    The type name or alias CLogger could not be resolved. Please check your configuration file and verify this type name.
    Par contre si j'ajoute une référence à LibImpl1 dans ProtoUnity01 tout marche.

    Je me demandais donc si il était possible de charger un objet d'une Dll non référencée par le projet.
    J'avais pourtant cru comprendre que l'intérêt de ce genre d'outil était justement de "casser" cette dépendance ?

    Merci beaucoup

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Pourquoi faire tout un projet pour l'interface seleument ?

    Essaie ceci :

    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
    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
     
        <assembly name="BusinessLogicLayer" />
        <assembly name="DataAccessLayer" />
        <namespace name="BusinessLogicLayer" />
        <namespace name="DataAccessLayer" />
     
        <container>
          <register type="IBLL_Projet" mapTo="BLL_Projet">
            <lifetime type="singleton" />
          </register>
     
          <register type="IDAL_Paie" mapTo="DAL_Paie">
            <lifetime type="singleton" />
          </register>
        </container>
      </unity>
    Et voici tes classes

    Dans un projet DataAccessLayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    namespace DataAccessLayer
    {
    public interface IDAL_Projet    {    }
    internal partial class DAL_Projet : IDAL_Projet    {    }
    }
    Puis dans un autre projet BusinessLogicLayer
    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
    namespace BusinessLogicLayer
    {
    internal partial class BLL_Projet    {
            /// <summary>
            /// Instance de la couche d'accès aux données
            /// </summary>
            [Dependency]
            private DataAccessLayer.IDAL_Projet  DAO { get; set; }
     
            /// <summary>
            /// Instanciation du container Unity pour l'injection de dépendance
            /// </summary>
            private IUnityContainer container = new UnityContainer();
     
            /// <summary>
            /// Constructeur par défaut de la classe d'implémentation de la couche métier.
            /// </summary>
            [InjectionConstructor]
            public BLL_Projet()
            {
                container.LoadConfiguration();
                DAO = container.Resolve<DataAccessLayer.IDAL_Projet>();
            }
        }
    public interface IBLL_Projet { }
    internal partial class BLL_Projet : IBLL_Projet { }
    }
    Inspires-toi, ca marche bien.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 36
    Points : 85
    Points
    85
    Par défaut
    Merci !
    J'essaie ça dès que j'ai un moment

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Ok, pas de problème, je te suis.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par vincepoencet Voir le message
    Bonjour.

    Je débute avec Unity, et j'ai un problème que je n'arrive pas à résoudre (peut être même que c'est le comportement normal en fait)

    J'ai une solution composée de 3 projets :
    -ILib qui contient une interface ILogger
    -LibImpl1 qui contient la classe CLogger qui implémente ILogger
    -ProtoUnity01 qui est mon application, qui référence ILib et ou j'utilise Unity

    Mon but est dans ProtoUnity01 de récupérer un ILogger depuis Unity
    Voici ce que contient mon fichier de config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
        <alias alias="ILogger" type="ILib.ILogger, ILib" />
        <alias alias="CLogger" type="LibImpl1.CLogger, LibImpl1"/>
        <namespace name="ProtoUnity01" />
        <assembly name="ProtoUnity01" />
     
        <container>
          <register type="ILogger"  mapTo="CLogger">
            <lifetime type="singleton"/>
          </register>     
        </container>
      </unity>
    J'ai l'erreur :


    Par contre si j'ajoute une référence à LibImpl1 dans ProtoUnity01 tout marche.

    Je me demandais donc si il était possible de charger un objet d'une Dll non référencée par le projet.
    J'avais pourtant cru comprendre que l'intérêt de ce genre d'outil était justement de "casser" cette dépendance ?

    Merci beaucoup
    La solution est simple mais pas trop logique (quoique si, enfin ca dépend du point de vue). En fait, oui le but est de casser la dépendance. Sauf que quand tu casses la dépendance, il n'y a pas de recopie de LibImpl1 dans le repertoire de l'application. Si tu sors tout dans le meme repertoire (ce qui n'est pas top) ou que tu recopies ta librairie d'implementation dans le meme repertoire que ton appli alors ca marchera.

Discussions similaires

  1. requete, problème de débutant
    Par focus dans le forum Access
    Réponses: 4
    Dernier message: 16/02/2006, 05h51
  2. Problème de débutant dans une requête
    Par decour dans le forum Access
    Réponses: 7
    Dernier message: 14/10/2005, 14h17
  3. [C#][service windows] problème de débutant avec 1 timer
    Par Nycos62 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/10/2005, 11h22
  4. Réponses: 3
    Dernier message: 24/09/2005, 09h34
  5. [DB2] problèmes de débutant
    Par rémi_tounul dans le forum DB2
    Réponses: 4
    Dernier message: 21/04/2005, 17h08

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