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 !

Sujet : Chargement dynamique de type [ Système / Exécution ] (thiosyiasar)

mardi 14 août 2007 à 14:20:12 | Chargement dynamique de type

thiosyiasar

Bonjour a tous,

Je voudrais faire un chargement dynamique d'assembly à partir d'un nom complet de type

Par exemple, j'ai la valeur suivante "System.Windows.Form.ButtonBase" et je voudrais charger sont Type afin d'obtenir des informations par réflexion.

J'ai essayé différente surcharge de la méthode Assembly.Load() sans succès.

Merci pour votre aide

Nico


mardi 14 août 2007 à 14:47:04 | Re : Chargement dynamique de type

coq

Administrateur CodeS-SourceS
Salut,

Assembly.Load permet de charger un assembly dans le domaine d'application courant.
Tu devras le faire si l'assembly dans lequel se trouve le type désiré n'est pas déjà chargé.
Pour le type tu vas devoir utiliser par exemple une des méthodes Type.GetType.


/*
coq
MVP Visual C#
CoqBlog
*/

mardi 14 août 2007 à 16:57:13 | Re : Chargement dynamique de type

thiosyiasar

Merci pour cette réponse Coq mais c'est vrai que ma question n'est pas trés clair.

Je suis en train de faire un générateur de Doc et je risque de rencontrer des références vers des types qui ne sont pas chargés.

J'ai besoin de charger ces types référencés pour obtenir des infos

Type.GetType() retourne null si le type n'est pas dispo (ex : Type.GetType("System.Windows.Forms.Button") dans une application type Console sans référence vers System.Windows.Forms.

Ce que je n'arrive pas a faire.

Retrouver un Type qui serait dans un assembly situé le GAC ou dans une liste de répertoire prédéfine dans la config.

Voila mon probleme

Merci pour ton aide

A+

Nico

mardi 14 août 2007 à 18:11:40 | Re : Chargement dynamique de type

coq

Administrateur CodeS-SourceS
Sans charger les assembly ce ne sera pas possible de déterminer s'ils contiennent le type.

Concernant le listing des assemblys du GAC, il y'a un peu de boulot d'appel aux APIs de Fusion, ce n'est pas à ma connaissance directement accessible.
Je regarde pour te faire un petit exemple.



/*
coq
MVP Visual C#
CoqBlog
*/

mardi 14 août 2007 à 18:20:03 | Re : Chargement dynamique de type

coq

Administrateur CodeS-SourceS
Réponse acceptée !
En fait ce ne sera pas forcément nécessaire, tu peux te baser sur le wrapper écris par Junfeng Zhang : [ Lien ]



/*
coq
MVP Visual C#
CoqBlog
*/

jeudi 16 août 2007 à 12:07:39 | Re : Chargement dynamique de type

thiosyiasar

Merci pour ton aide Coq Pour ceux que ca intéresse... Un p'tit exemple tout fait a partir du Wrapper de Junfeng Zhang using System; using System.Reflection; using System.GACManagedAccess; internal static void Main() { // Création de l'énumérateur AssemblyCacheEnum oEnumerator = new AssemblyCacheEnum(null); // Lecture du 1er assembly string sAssemblyName = oEnumerator.GetNextAssembly(); while (sAssemblyName != null) { // Création de la référence vers l'assembly AssemblyName oAssemblyName = new AssemblyName(sAssemblyName); System.Diagnostics.Debug.WriteLine(oAssemblyName.Name); // Test de chargement d'un assembly if (oAssemblyName.Name.Equals("Microsoft.VisualC.VSCodeParser")) { Assembly oAssembly = Assembly.Load(oAssemblyName); System.Diagnostics.Debug.WriteLine(oAssembly.FullName); } // Lecture du prochain assembly sAssemblyName = oEnumerator.GetNextAssembly(); } } Nico

jeudi 8 novembre 2007 à 19:18:54 | Re : Chargement dynamique de type

thiosyiasar

Salut,

Pour ceux que ca intéresse, voici la source ou j'ai utilisé la réponse de coq :
http://www.csharpfr.com/code.aspx?ID=44645

Nico

samedi 10 novembre 2007 à 23:11:21 | Re : Chargement dynamique de type

coq

Administrateur CodeS-SourceS
Ca c'est du suivi de question, cool ! :-)



/*
coq
MVP Visual C#
CoqBlog
*/



Cette discussion est classé dans : dynamique, type, chargement, assembly


Répondre à ce message

Sujets en rapport avec ce message

Creation dynamique d'objet, InvalidCastException [ par Warny ] Salut,Je cherche à créer un chargeur de classe. Celui-ci doit me permettre de trouver les classes dans une assembly ou un ensemble d'assembly qui déri Récupérer la description d'une méthode "summary" [ par bmouget ] Bonjour,Aprés chargement d'une Assembly, je voudrais récupérer la description d'une fonction, celle que l'on saisi dans /// .Voici mon code :         Désérialiser un Type sans que l'assembly ne soit dans le répertoire de l'application [ par Nikoui ] Bonjour,J'ai un petit soucis avec la désérialisation d'un objet de type "Type", voila le problème :- Je charge une assembly en mémoire, cette assembly Problème de type avec une assembly [ par dinytro ] Bonjour, je souhaiterais récupérer le type d'une assembly que je charge avec la methode SampleAssembly = Assembly.LoadFrom(@pathAssembly); Ensuite je Assembly.GetInterfaces() [ par jusob ] Bonjour, J'ai un programme qui doit charger des DLLs. Ces DLLs implémentent l'interface PluginInterface. Programme principal: foreach (Type typ Impression type papier [ par Nicodelphi ] Slt esc qu'il est possible de choisir le type de papier pour l'impression en C# avec le pagesetupdialog je voudrait avoir le choix entre tout les papi XML, Enum, Dynamique [ par ricklekebekoi ] Bonjour,Je travail sur un serveur de jeu, dont l'émulateur est écrit entierement en c#. L'emulateur contient une base en assembly.exe, et un dossier s


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

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,328 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é.