Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CHARGER UNE ASSEMBLY DANS LE CODE


Information sur la source

Catégorie :.NET Source .NET ( DotNet ) Classé sous : assembly, charger Niveau : Initié Date de création : 29/01/2004 Date de mise à jour : 29/01/2004 21:27:36 Vu / téléchargé: 9 195 / 270

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

Description

Ces quelques lignes de code vont vous permettre de charger une assembly en mémoire et appeler une méthode d'une classe si trouvant.
Cela peut être utile si vous devez transférer des assembly via le réseau par exemple et ensuite les ouvrir.
Comme on n'a pas l'assembly avec nous au moment de la compilation, il nous est impossible de la lier via l'ajout d'un référence.

Si on veut, ces lignes font la même chose que l'ajout d'une référence à un projet.
 

Source

  • using System.Reflection;
  • ...
  • Assembly a = Assembly.LoadFile(Environment.CurrentDirectory + "\\MyAssembly.dll");
  • object myClass = a.CreateInstance("MyAssembly.MyClass",false,BindingFlags.CreateInstance,null,new object[]{"gg00xiv"},System.Globalization.CultureInfo.InstalledUICulture,null);
  • string name = (string)myClass.GetType().InvokeMember("Name",BindingFlags.GetProperty,null,myClass,null);
  • Console.WriteLine(name);
  • Console.ReadLine();
using System.Reflection;
...

Assembly a = Assembly.LoadFile(Environment.CurrentDirectory + "\\MyAssembly.dll");

object myClass = a.CreateInstance("MyAssembly.MyClass",false,BindingFlags.CreateInstance,null,new object[]{"gg00xiv"},System.Globalization.CultureInfo.InstalledUICulture,null);

string name = (string)myClass.GetType().InvokeMember("Name",BindingFlags.GetProperty,null,myClass,null);

Console.WriteLine(name);

Console.ReadLine();

Conclusion

J'ai présenter ce code dans une application console, car il n'y avait pas nécessité d'une interface graphique pour cet exemple.

Si ce code n'est pas clair, postez vos questions sur cette source, j'y répondrais.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de coq le 29/01/2004 22:18:57 administrateur CS

alors ça c'est le genre de chose qu'il est bon de savoir
merci

signaler à un administrateur
Commentaire de Crazyht le 30/01/2004 07:41:25 administrateur CS

Et wi c'est la technique a employer aussi pour faire des plug in :)

Bonne astuce :)

signaler à un administrateur
Commentaire de gg00xiv le 30/01/2004 17:16:29

merci :)

signaler à un administrateur
Commentaire de smoundangha le 02/02/2004 09:13:24

salut gg!
Dejà, merci d'avoir pour les reponses que tu apportais à mes questions. Maintenant j'en sais un peu plus sur c# et j'aimerais en faire profiter les autres.
Pourrais tu, stp, me dire comment je fais por voir les questions posées sur le site et y repondre (je trouve pas le lien sur le site)?
thanx

signaler à un administrateur
Commentaire de TheSaib le 02/02/2004 12:48:55 administrateur CS

C'est con c'etais déjà présent sur le site :>

signaler à un administrateur
Commentaire de TheSaib le 02/02/2004 12:52:13 administrateur CS

http://www.csharpfr.com/code.aspx?ID=11461

C'est pareil avec la compilation en plus !! ROFL

signaler à un administrateur
Commentaire de gg00xiv le 02/02/2004 15:13:16

Euh, c'est pas la peine de le prendre mal. J'ai fais une recherche sur le site sur Assembly et j'ai rien trouvé.
De plus il existe de nombreuses sources sur ce site now ce qui rends les colisions un peu plus fréquentes.

En regardant ton source je vois aussi que tu n'a pas mis de code de présentation donc si j'étais tombé dessus j'aurais pu ne pas m'apercevoir que cela parler de la même chose. Je ne peux pas ouvrir non plus tous les fichiers zip pour voir si le code que je souhaite poster existe deja autre part.

Si en dernier recours t'a trop la haine de voir la "même" source que la tienne postée par un autre, ben demande à l'admin, si tu n'en ai pas un toi même, de le supprimer.

Cordialement,
gg00xiv

signaler à un administrateur
Commentaire de TheSaib le 02/02/2004 15:21:12 administrateur CS

lol , je ne l'ai pas pris mal , c'était juste une information ...
Enfin je vois que toi tu l'as mal pris j'en suis désolé , ce n'étais pas le but de ma remarque !

++
Thesaib

signaler à un administrateur
Commentaire de gg00xiv le 02/02/2004 15:26:09

Il y a plein de sources traitant du même sujet sur le site, mais chacune exprimée d'un point de vue différent, ce qui peut parfois apporter un peu plus au lecteur.

Oublions ce malentendu.

signaler à un administrateur
Commentaire de coq le 02/02/2004 15:31:36 administrateur CS

lol
apres tout, mieux vaut trop d'exemples que pas assez

signaler à un administrateur
Commentaire de alexandre7g le 13/04/2007 16:40:38

Bjr,

Je suis très intéressé par ce source pour eviter un réferencement assisté par visual studio et pour les plug in.

J'ai juste un peu de mal:pas bcp d'expérience c#...

1/'MyAssembly' = ma dll?
2/'gg00xiv': ca c'est l'argument pour la creation de ton objet?
3/'string name = (string)myClass.GetType().InvokeMember("Name",BindingFlags.GetProperty,null,myClass,null);' :sert a koi cette ligne?
4/c koi 'name'?

dsl s'il y a bcp de questions...

signaler à un administrateur
Commentaire de alexandre7g le 16/04/2007 13:35:17

Finalement j'ai résolu mes pb tout seul.
1/MyAssembly ets le nom du namespace
2/'gg00xiv' c'est bien l'argument pour la création de l'objet
3/'string name = (string)myClass.GetType().InvokeMember("Name",BindingFlags.GetProperty,null,myClass,null);' cette ligne utilise une méthode de la classe et récupère le résultat
4/ "Name" c'est le nom de la méthode appelée

voila pour ceux qui serait intéressé...

Pour les experts:Peut on faire de l'introspection (réflexion) avec des DLL en C++ Managé (des wrappers de C++ natif pour être plus précis)?

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Libérer une assembly [ par mathsfin ] Bonjour, Je voudrais savoir comment on peut libérer une assembly. Le code qui me permet de charger mon assembly est le suivant :Assembly myassembly CHARGER LES DONNÉES D'UNE TABLE DANS UN COMOBOX [ par madrid79 ] BONJOUR? comment faire pour pour avoir dans un comobox tout les donnée d'un colonne d'une table A. merci Signature d'assembly [ par watoubilly ] J'ai du mal a comprendre à quoi sert la signature d'un assembly si ce n'est le coup de la clé privé clé public.Est-ce que ça vaut le coup de le faire could not load file or assembly'crystaldecisions.crystalreports.engine [ par hicham_899 ] Salut après  la génération de setup d'une application  sur C#.net, j'ai l'installer sur une machine tactile, l'application fonctionne bien mais le pro Comparaison de signature [ par TeBeCo ] Je suis actuellement confronté à un problème dans mon code :admettons que je devellope un Assembly A en version 1.0 qui est signé avec la clé Akje dep probleme de connexion a une base de données foxpro [ par cudenetf ] bonjour, je ne sais pas si je suis dans la bonne sectionj'aimerais pouvoir acceder a des tables foxpro (dbase 3 il me semble) a partir d'un programme Problème de processus : Récupérer des données d'un processus A pour les envoyer dans un processus B [ par MasterShadows ] Bonjour à tous et à toutes,Je développe en ce moment même un designer pour créer des interfaces graphiques en XML pour XNA.Mon programme se divise en Erreur envoi mail [ par doctanks ] Bonjour,Voila je tente d'envoyer un mail par l'intermédiaire d'un petit logiciel mais lors de l'envoi je reçois le message: "Une exception non gérée s XmlConfigurator [ par csharp2 ] Bonjour, Comment se fait-il que je n'ai pas le membre XmlConfigurator dans la dll log4net que j'ai téléchargé à partir du site logging.apache.org, car Plusieurs assembly [ par watoubilly ] Bonjour,je fais du C# depuis qq mois et la notion d'Internal me plait bien. Par contre comment peut on avoir plusieurs assembly dans un seul projet ?


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,671 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.