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

VB.NET Discussion :

[VB.NET] Injection de dépendances


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 63
    Points : 35
    Points
    35
    Par défaut [VB.NET] Injection de dépendances
    Bonjour à tous,

    Je suis confronté un petit soucis, dans un developpement en couche, je ne parviens pas à accéder aux méthodes de la couche inférieure autrement que par l'instanciation de sa classe (comme 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
    Imports BPL
    
    Module ConsoleTest
        Sub Main()
    
            Console.WriteLine("Entre un chiffre")
            Dim ChiffreEnregistre As Integer
            ChiffreEnregistre = Console.ReadLine()
    
            Dim TrucInutil As New ChiffreService  
            Console.WriteLine(TrucInutil.MultiplicationParDeux(ChiffreEnregistre))
    
        End Sub
    
    End Module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Class ChiffreService
        Function MultiplicationParDeux(ByVal ChiffreEnregistre As Integer)
            Dim Resultat As Integer
            Resultat = ChiffreEnregistre * 2
            Return Resultat
        End Function
    End Class
    Les exemples sont volontairement simplistes, sinon je ne vais plus rien comprendre .

    Je veux donc me débarasser de cette instanciation et plutôt utiliser l'injection de dépendance.

    J'ai donc potassé, mais je pense n'avoir rien compris, jugez-en par vous-même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Imports DAL
    Imports BEL
     
    Public Class UserService
     
        Private _repository As IUserRepository
     
     
        Public Function GetOneCustomer(ByVal chiffreEnregistre As Integer) As Integer
            Return _repository.GetMultiplicationParDeux(chiffreEnregistre)
        End Function
     
    End Class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Interface IUserRepository
        Function GetMultiplicationParDeux(ByVal chiffreEnregistre As Integer)
    End Interface
     
     
    Public Class UserRepository
        Implements IUserRepository
     
     
        Public Function GetMultiplicationParDeux(ByVal chiffreEnregistre As Integer) Implements IUserRepository.GetMultiplicationParDeux
            Return chiffreEnregistre * 2
        End Function
     
    End Class
    Qu'est-ce que je fais mal ? Comment dois-je m'y prendre pour accéder à des fonction d'une couche inférieure sans en instancier la classe ?

    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    Essaye d'utiliser le mot clé shared pour ta fonction. Et normalement tu dois pouvoir accéder à la fonction sans déclarer l'instance.

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Class ChiffreService
        Public Shared Function MultiplicationParDeux(ByVal ChiffreEnregistre As Integer) As Integer
            Dim Resultat As Integer
            Resultat = ChiffreEnregistre * 2
            Return Resultat
        End Function
    End Class

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 63
    Points : 35
    Points
    35
    Par défaut
    Merci pour ta réponse. En effet, déclarer Shared la fonction peut être une solution. Ceci étant, n'y a t-il pas un moyen de faire cela grâce aux interfaces ?

    Je ne saisis pas bien l'utilité de ces interfaces. J'ai bien compris qu'une interface indique les prototypes des fonctions de la classe qui l'implémente. Mais c'est quoi l’intérêt ? Est-ce que les interfaces peuvent apporter un début de réponse à ma question :

    Comment accéder à une fonction de la classe d'une couche inférieure ?

    - Instancier la classe, puis accéder aux fonctions à partir de l'instance.
    - Déclarer les fonctions Shared.
    - ?

    ... et après ?

    Comment un professionnel s'y prend ?

Discussions similaires

  1. [Article] Injection de dépendances en .NET
    Par Philippe Vialatte dans le forum Général Dotnet
    Réponses: 15
    Dernier message: 18/10/2017, 13h35
  2. [VB.NET] Ajouter une dépendance à un service
    Par Cricket dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/05/2011, 20h55
  3. [EJB3] Injection de dépendance et Stateful
    Par newbeewan dans le forum Java EE
    Réponses: 1
    Dernier message: 15/05/2007, 07h33
  4. [Integration] [EasyMock] Injection de dépendance à l'éxécution
    Par frangin2003 dans le forum Spring
    Réponses: 2
    Dernier message: 06/03/2007, 11h06
  5. Spring + TagSupport et injection de dépendance
    Par worldchampion57 dans le forum Spring Web
    Réponses: 2
    Dernier message: 26/02/2007, 09h01

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