Charger une assembly dans le code

Soyez le premier à donner votre avis sur cette source.

Vue 14 774 fois - Téléchargée 418 fois

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 / Exemple :


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.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
11
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
20 novembre 2007

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)?
Messages postés
11
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
20 novembre 2007

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...
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
80
lol
apres tout, mieux vaut trop d'exemples que pas assez
Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
12
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.
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
14
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
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.