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 :

Utiliser une classe dans un autre projet [Débutant]


Sujet :

VB.NET

  1. #1
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut Utiliser une classe dans un autre projet
    bonjour,

    Pour la première fois je voudrais utilise une classe dans un autre projet.

    La classe en question s'appelle MaClasse
    Elle est dans un module de classe et dans un namespace appelée MesClasses.
    J'ai généré la solution ce qui a créé une DLL dans le répertoire Release de la solution. La DLL s'appelle MesClasses.dll. Je me suis arrangé pour que la solution est le même nom que le namespace mais je n'ai pas compris si c'est important ou non. Sinon, la DLL aurait pris le nom de la solution.

    Bref, ensuite j'ouvre une autre solution dans laquelle je souhaiterais utiliser MaClasse.

    J'ai ajouté une référence, dans cette solution, à MesClasses.dll.

    Ensuite, si j'ai bien compris, il faudrait que je fasse Imports MesClasses

    Puis, je souhaite créer une classe héritée de MaClasse.
    L'instruction Inherits MesClasses.MaClasse ne fonctionne pas.

    Que faut-il faire ?

  2. #2
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Par module de classe, tu entends bibliothèque ?

    Lorsque tu dis L'instruction Inherits MesClasses.MaClasse ne fonctionne pas. quel est le message d'erreur exact ? (Nb: Tu n'as pas besoin de faire imports TaDllDeClass pour hériter)

    Sinon selon ton cheminement, ça devrait fonctionner.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  3. #3
    Membre éclairé Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Points : 735
    Points
    735
    Par défaut
    Ta classe MaClasse doit être Public ou Protected Friend.

  4. #4
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    C'est faisable une classe private ? (Si oui, pour quelle utilité ... ?)

    EDIT: Apparemment oui c'est faisable, si la classe private est imbriquée dans une public.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Class ClassTest
     
        Private Class ClassTestPrivate
     
        End Class
     
    End Class
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  5. #5
    Membre éclairé Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Points : 735
    Points
    735
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    C'est faisable une classe private ? (Si oui, pour quelle utilité ... ?)

    EDIT: Apparemment oui c'est faisable, si la classe private est imbriquée dans une public.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Class ClassTest
     
        Private Class ClassTestPrivate
     
        End Class
     
    End Class
    Je ne parlais pas des classes Private, plutôt des classes Friend (par défaut si on ne précise pas), dans ce cas les classes ne sont pas accessibles depuis un autre assembly.

  6. #6
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Au temps pour moi, j'avais oublié qu'il y avait Friend aussi.

    Par défaut ? Sous VS lorsque j'ajoute une class il me la propose public par défaut.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  7. #7
    Membre éclairé Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Points : 735
    Points
    735
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    Par défaut ? Sous VS lorsque j'ajoute une class il me la propose public par défaut.
    Au temps pour moi, c'est la cas en C#

  8. #8
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Lorsque tu dis L'instruction Inherits MesClasses.MaClasse ne fonctionne pas. quel est le message d'erreur exact ?
    Il n'y en a pas mais lorsque je tape cette instruction, l'autocomplétion ne fonctionne pas ce qui signifie que l'IDE ne retrouve pas MesClasses et l'interprète donc comme une erreur de syntaxe.*

    Elle est dans un module de classe et dans un namespace appelée MesClasses.
    En fait, ce module classe figure dans un projet de type Winform.
    J'ai fait un test en créant un projet "bibliothèque de classes" et en collant dans le module de classe de ce projet le code de cette classe.
    Ensuite, je génère et j'y fais référence dans mon autre projet.
    Et là, miracle ça marche.

    J'ignorais que pour générer une DLL de classe, il fallait partir d'un projet de "bibliothèque de classes"

  9. #9
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Je ne dis pas que c'est pas faisable depuis un projet Winforms (c'est peut-être le cas, jamais essayé), mais d'un point de vue logique, un groupement de classe est une bibliothèque de classe.

    Le fait de partir sur ce type de projet fait que VS générera un assembly sous la forme d'une fichier.dll (D'ailleurs je trouve ça bizarre que VS t'ai généré une dll pour un projet Winforms..)

    Si c'est relatif à ce que tu fais en ce moment (Controls "Custom"), l'idéal est la bibliothèque de classe. Ainsi tu pourras te servir de tes Controls dans chaque projet (avec la référence à la dll), et également modifier/gonfler ta bibliothèque à côté.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    un projet winforms peut etre transformé en dll ou service je crois depuis les propriétés du projet
    et normalement un exe winforms transformé en bibliothèque peut etre utilisé, tout comme un exe peut etre référencé comme une dll à priori, il y a juste un point d'entrée type sub main en plus
    on peut faire l'apprenti sorcier de ce côté là sans trop de risques, j'ai déjà combiné un exe (winforms ou wpf) et un service dans le même exe

    Citation Envoyé par _Ez3kiel Voir le message
    C'est faisable une classe private ? (Si oui, pour quelle utilité ... ?)
    elle doit en effet être dans une classe publique, ce qui permet à la classe publique d'être la seule à l'utiliser, ca permet donc d'avoir une classe support pour coder sans l'exposer à d'autres développeurs
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    un projet winforms peut etre transformé en dll ou service je crois depuis les propriétés du projet
    et normalement un exe winforms transformé en bibliothèque peut etre utilisé, tout comme un exe peut etre référencé comme une dll à priori, il y a juste un point d'entrée type sub main en plus
    on peut faire l'apprenti sorcier de ce côté là sans trop de risques, j'ai déjà combiné un exe (winforms ou wpf) et un service dans le même exe
    Bon à savoir tout ça, merci !


    Citation Envoyé par Pol63 Voir le message
    elle doit en effet être dans une classe publique, ce qui permet à la classe publique d'être la seule à l'utiliser, ca permet donc d'avoir une classe support pour coder sans l'exposer à d'autres développeurs
    Oui, le fait qu'elle doive être obligatoirement imbriquée dans une classe publique m'a laissé penser que ça devait être dans ce but ci.
    Je file faire qlqes modifs maintenant que je sais ça.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser une classe dans une autre
    Par Palca dans le forum ActionScript 3
    Réponses: 9
    Dernier message: 03/06/2009, 00h19
  2. Wascana, utilisation de classe dans un autre projet
    Par BugBunny dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 04/10/2008, 12h07
  3. Utiliser une classe d'un autre projet de la même solution.
    Par Xzander dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 14/06/2007, 16h31
  4. Réponses: 4
    Dernier message: 25/07/2006, 16h30
  5. Utilisation d'une classe dans un autre fichier
    Par melotron dans le forum Général Python
    Réponses: 1
    Dernier message: 09/07/2006, 13h11

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