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

C# Discussion :

Interop c# VB


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut Interop c# VB
    Bonjour,

    Après avoir parcouru plusieurs forum et tuto je suis complètement dans le flou :

    Je cherche a développez une DLL en C# qui implémente une méthode static( qui devra simplement afficher une form par exemple), seulement pour créer un objet COM il faut que la classe implémente une interface(Wrapper a ce que j'ai compris) seulement les classe static ne peuvent pas implémenter d'interface, et les interface ne peuvent pas avoir de prototype static.

    Comment Faire ?

    Pour info cet dll est destiné a être utiliser en VB.

    Sinon si quelqu'un aurait un exemple d'une dll développez en c# et d'un code un VB qui l'utilisent je suis preneur.

  2. #2
    Membre émérite 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
    Par défaut
    question bête, pourquoi tu nr fais pas une classe static qui fait appel à la classe non static qui implémente cette interface?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut
    Je ne comprend pas très bien ce que tu veut dire :
    premièrement je n'ai pas besoin d'une classe non static pour mon traitement et deuxièmement je cherche justement a implémenter une classe static qui puissent être utilisé dans une dll ce que je n'arrive pas a faire puisque pour créer un objet COM il faut que la classe implémente une interface.

    Sinon si quelqu'un a simplement un exemple de code d'une dll en c# utilisé en VB cela m'aiderait grandement.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Je ne comprends pas du tout pourquoi tu veux à tout prix utiliser une classe static.

    Peux tu préciser ce point ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut
    Tout simplement parce que mon traitement ne nécessite pas de créer un objet alors je cherchai a faire pour que l'utilisation de ma dll soit au plus simple dans le code VB.

    Mais voyant que je ne trouve aucune solution a ce problème je pense que je vais simplement faire une classe non static qui aura une méthode non static pour le traitement et dans mon code VB je créerait une instance de cette objet puis j'appellerai la méthode du traitement. Seulement ca non plu je n'arrive pas a le faire( faut dire que j'y connait pas grand chose en VB )

    est ce qu'il faut que j'ajoute ma dll au ressource du projet en VB ou que je l'apelle directement dans le code ?

    Quel serait la syntaxe pour l'appeler dans le code en VB si ma dll s'apelle TestDll, et ma classe TestClass

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Sub testObjet Lib "TestDll.dll" Alias TestClass
    ?

  6. #6
    Membre émérite 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
    Par défaut
    tu peux instancier n'importe quelle classe public qui se trouve dans la DLL, mais si tu aimes tant les classes statiques, tu fais appel à une classe statique qui instancie la classe qui implémente ton interface.

  7. #7
    Rédacteur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 608
    Par défaut
    Citation Envoyé par Franklin39 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Sub testObjet Lib "TestDll.dll" Alias TestClass
    Ce genre de déclaration te permet juste d'utiliser des dll qui contiennent des procédures ou des fonctions qui sont dans des dll du type api win 32, et ce ne sont pas des dll COM.

    Citation Envoyé par Bluedeep
    Ne touchant plus à VB depuis plus de 8 ans (comme la pluspart), je suis désolé mais je ne peux pas t'aider sauf en te confirmant que ta déclaration plus haut est fausse : tu n'as pas à déclarer une DLL COM si tu la met en resource (??? est-ce le bon terme, je ne sais plus ) dans le projet VB.
    Pfiou... c'est vrai que ça nous rajeunit pas. De mémoire il faut que la dll COM soit enregistrée dans la base de registres (avec regsvr32.exe il me semble). Ensuite il faut l'ajouter dans les références du projet.

    Ensuite tu peux instancier les classes qui sont dans la dll:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim monObjet as MaClasse
    set monObjet = new MaClasse
    Voici un cours sur l'interop COM :
    http://dotnet.developpez.com/cours/interopcom/

Discussions similaires

  1. [C#] Comment deployer un COM Interop ?
    Par loverdose dans le forum C#
    Réponses: 12
    Dernier message: 27/04/2012, 12h01
  2. [Interop][C#] Comment implementer dll encapsulant du VBA ?
    Par Fredou1982 dans le forum C++/CLI
    Réponses: 4
    Dernier message: 13/12/2007, 13h19
  3. Réponses: 4
    Dernier message: 13/05/2006, 00h24
  4. Réponses: 6
    Dernier message: 30/03/2006, 15h15

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