Assembly.GetInterfaces()

Signaler
Messages postés
5
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
7 février 2005
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour,




J'ai un programme qui doit charger des DLLs. Ces DLLs implémentent l'interface PluginInterface.





Programme principal:


<tt>

foreach (Type type in assembly.GetTypes())

{

foreach(Type intrfce in type.GetInterfaces())

{

if (intrfce == typeof(PluginInterface))

{

Console.WriteLine("and this is a plugin");

pluginList.Add((PluginInterface) Activator.CreateInstance(type));

}

else

Console.WriteLine("but this is NOT a plugin ({0} != {1})", intrfce, typeof(PluginInterface));

}

}



La DLL:

public class Plugin : PluginInterface

{

....

}

</tt>





Et en sortie:


Found /home/julien/Projects/depot/branches/jsobrier/platine/PluginInterface/validation/Plugin.dll


but this is NOT a plugin (PluginInterface != PluginInterface)


Core:Core no plugin found!





Je comprends pas ce qui ne vas pas surtout quand je vois "(PluginInterface != PluginInterface)"!

5 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Ce code ne fonctionnera que si l'interface est vraiment la même, dans le sens même assembly, pas dans le sens "même code".

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
5
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
7 février 2005

Le programme et la DLL ont été compilé avec le même fichier PluginInterface.cs



Merci pour ta remarque. En fait, je cherche à voir si l'interface a le
même nom uniquement, car elle pourra évoluer dans le temps. Comment
modifier mon programme?
Messages postés
5
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
7 février 2005

Heu, ce serait pas idiot ce que je viens de dire? Il doit falloir que
PluginInterface utilisé par les 2 programme (le core et la DLL) soient
strictement identiques, non?
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Tu peux récupérer les noms avec les propriété Name et FullName de la classe Type.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Ba ce serait peut être mieux.
Et si tu veux étendre les fonctionnalités de ton interface par la suite rien ne t'empeche d'en crée une autre, ainsi les anciens plugins continuerons de focntionner alors que les nouveaux implémenterons la nouvelle et l'ancienne.

Cocoricoooooooo !!!!
coq
MVP Visual C#