Chargement dynamique de type [Résolu]

thiosyiasar 186 Messages postés lundi 11 mars 2002Date d'inscription 30 novembre 2010 Dernière intervention - 14 août 2007 à 14:20 - Dernière réponse : cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention
- 10 nov. 2007 à 23:11
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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 14 août 2007 à 18:20
3
Merci
En fait ce ne sera pas forcément nécessaire, tu peux te baser sur le wrapper écris par Junfeng Zhang : http://blogs.msdn.com/junfeng/articles/229649.aspx

/*
coq
MVP Visual C#
CoqBlog
*/

Merci cs_coq 3

codes-sources a aidé 80 internautes ce mois-ci

Commenter la réponse de cs_coq
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 14 août 2007 à 14:47
0
Merci
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
*/
Commenter la réponse de cs_coq
thiosyiasar 186 Messages postés lundi 11 mars 2002Date d'inscription 30 novembre 2010 Dernière intervention - 14 août 2007 à 16:57
0
Merci
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
Commenter la réponse de thiosyiasar
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 14 août 2007 à 18:11
0
Merci
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
*/
Commenter la réponse de cs_coq
thiosyiasar 186 Messages postés lundi 11 mars 2002Date d'inscription 30 novembre 2010 Dernière intervention - 16 août 2007 à 12:07
0
Merci
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
Commenter la réponse de thiosyiasar
thiosyiasar 186 Messages postés lundi 11 mars 2002Date d'inscription 30 novembre 2010 Dernière intervention - 8 nov. 2007 à 19:18
0
Merci
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
Commenter la réponse de thiosyiasar
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 10 nov. 2007 à 23:11
0
Merci
Ca c'est du suivi de question, cool ! :-)

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq

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.