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++/CLI Discussion :

Utilisation de constructeur avec le System.Reflection


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2020
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 25
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2020
    Messages : 2
    Par d�faut Utilisation de constructeur avec le System.Reflection
    Bonjour,
    J'utilise le syst�me de reflection afin de charger un dll, plus pr�cisement le dll "MySql.Data.dll" de "MySQL V8".
    Cependant, il est n�cessaire de cr�er une connexion MySqlConnection, dont on retrouve la documentation ici : https://dev.mysql.com/doc/dev/connec...Connection.htm
    Mais j'ai bien l'impression de ne pas pouvoir utiliser le constructeur afin de d�finir la "connection string" n�cessaire a cr�er un lien avec la base de donn�es.
    Voici ce que j'ai fait pour le moment.
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Assembly^ MySQLInterface = Assembly::LoadFile("C:\\Users\\Xabi\\source\\repos\\Bdd Benchmark\\data\\MySQL V8\\MySql.Data.dll");
    			if (MySQLInterface != nullptr)
    			{
    				MessageBox::Show("Ca charge le fichier");
     
    				if (auto typeConnection = MySQLInterface->GetType("MySql.Data.MySqlClient.MySqlConnection"))
    				{
    					MessageBox::Show("Ca trouve bien la classe");
    					if (Object^ instanceConnection = Activator::CreateInstance(typeConnection))
    					{
    						MessageBox::Show("Ca créée l'instance");
     
    						if (auto methodMySQLConnection = typeConnection->GetMethod("MySqlConnection")) {
    							MessageBox::Show("Ca charge la methode MySqlConnection");
    							try
    							{
    								MessageBox::Show(methodMySQLConnection->Invoke(instanceConnection, gcnew array<Object^>(1) {
    									"SERVER=" + this->adresse +
    									";DATABASE=" + this->dataBaseName +
    									";UID=" + this->login +
    									";PASSWORD=" + this->mdp + ";"
    								})->ToString());
    							}
    							catch (Exception^ e)
    							{
    								MessageBox::Show(e->ToString());
    							}
     
    						}
    						if (auto connectionOpenMethod = typeConnection->GetMethod("Open")) {
    							MessageBox::Show("Ca charge la methode Open");
    							try
    							{
    								MessageBox::Show(connectionOpenMethod->Invoke(instanceConnection, nullptr)->ToString());
    							}
    							catch (Exception^ e)
    							{
    								MessageBox::Show(e->ToString());
    							}
    						}
     
    					}
    				}
    			}
    Si vous aviez des solutions, je suis toute ouie.
    Merci

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Activator::CreateInstance() poss�de une surcharge qui accepte un tableau variadic de param�tres (d�clar� params object[] en C#) en plus du type.
    De plus, il est possible que tu te compliques la vie pour rien en continuant � utiliser la r�flexion: Si MySqlConnection impl�mente l'interface System::Data::IDbConnection, alors tu peux l'utiliser directement...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    if (auto instanceConnection = safe_cast<IDbConnection^>(Activator::CreateInstance(typeConnection, connectionString)) != nullptr)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Souci avec utilisation des constructeurs
    Par Khalfe dans le forum D�buter avec Java
    R�ponses: 7
    Dernier message: 09/04/2020, 01h11
  2. R�ponses: 1
    Dernier message: 21/07/2011, 11h15
  3. probl�me lors de l'utilisation de WCF avec System.Transaction
    Par loango dans le forum Windows Communication Foundation
    R�ponses: 1
    Dernier message: 18/03/2010, 10h10
  4. R�ponses: 1
    Dernier message: 24/12/2009, 11h53
  5. utilisation de dll avec diverses compilateurs
    Par Thylia dans le forum C++
    R�ponses: 30
    Dernier message: 21/10/2004, 16h30

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