Charger une assembly dans le code

Soyez le premier à donner votre avis sur cette source.

Vue 14 711 fois - Téléchargée 385 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

alexandre7g
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)?
alexandre7g
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...
cs_coq
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
74 -
lol
apres tout, mieux vaut trop d'exemples que pas assez
gg00xiv
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.
TheSaib
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
13 -
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

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.