Assembly.GetInterfaces()

jusob Messages postés 5 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 7 février 2005 - 5 févr. 2005 à 19:26
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 5 févr. 2005 à 21:30
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

cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
5 févr. 2005 à 20:04
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#
0
jusob Messages postés 5 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 7 février 2005
5 févr. 2005 à 20:10
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?
0
jusob Messages postés 5 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 7 février 2005
5 févr. 2005 à 20:14
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?
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
5 févr. 2005 à 20:17
Tu peux récupérer les noms avec les propriété Name et FullName de la classe Type.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
5 févr. 2005 à 21:30
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#
0