begin process at 2012 02 11 12:30:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Exécution

 > 

Chargement dynamique de type


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Chargement dynamique de type

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ée 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 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 Autre question sur la Reflection [ par mcferson ] Bonjour ici. depuis ce code :[code=cs]public void GetDriver(string model) { if (model.Contains("AVL VT-SERIAL")) 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 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 :         binary [ par amel227 ] Bonjour à tousje veux inserer une valeur X (définie sur mon programme c#) dans un attribut de type binary dans ma base mysql.Quel type je peux définir


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,342 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales