OVH Cloud OVH Cloud

Déterminer le membre implémentant un membre donné d'une interface

2 réponses
Avatar
Patrice Ongla
Bonjour à tous,

Dans les api de réflexion, je cherche le moyen de trouver, pour un type
implémentant une interface, quel membre de ce type implémente un membre
donné de cette interface. Je vois que reflector sait le faire. Une fonction
simple pour obtenir ça ? J'ai tourné la doc dans tous les sens et pas mal
surfé sans succès.



D'avance merci.

2 réponses

Avatar
Simon Mourier [SoftFluent]
Vous pouvez utiliser la méthode Type.GetInterfaceMap. Par exemple:

public interface IToto
{
void Titi();
void Tata();
}

public class Tutu: IToto
{
public void Machin()
{
}

public void Titi()
{
}

void IToto.Tata()
{
}
}

foreach(MethodInfo mi in
typeof(Tutu).GetInterfaceMap(typeof(IToto)).TargetMethods)
{
Console.WriteLine("mi=" + mi.Name + ", dt=" + mi.DeclaringType);
}

affiche

mi=Titi, dt=ConsoleApplication1.Tutu
mi=ConsoleApplication1.IToto.Tata, dt=ConsoleApplication1.Tutu

Simon.
www.softfluent.com

"Patrice Ongla" a écrit dans le message de news:

Bonjour à tous,

Dans les api de réflexion, je cherche le moyen de trouver, pour un type
implémentant une interface, quel membre de ce type implémente un membre
donné de cette interface. Je vois que reflector sait le faire. Une
fonction
simple pour obtenir ça ? J'ai tourné la doc dans tous les sens et pas mal
surfé sans succès.



D'avance merci.



Avatar
Patrice Ongla
Impec ! Merci.


"Simon Mourier [SoftFluent]" a écrit dans le
message de news:
Vous pouvez utiliser la méthode Type.GetInterfaceMap. Par exemple:

public interface IToto
{
void Titi();
void Tata();
}

public class Tutu: IToto
{
public void Machin()
{
}

public void Titi()
{
}

void IToto.Tata()
{
}
}

foreach(MethodInfo mi in
typeof(Tutu).GetInterfaceMap(typeof(IToto)).TargetMethods)
{
Console.WriteLine("mi=" + mi.Name + ", dt=" + mi.DeclaringType);
}

affiche

mi=Titi, dt=ConsoleApplication1.Tutu
mi=ConsoleApplication1.IToto.Tata, dt=ConsoleApplication1.Tutu

Simon.
www.softfluent.com

"Patrice Ongla" a écrit dans le message de
news:
Bonjour à tous,

Dans les api de réflexion, je cherche le moyen de trouver, pour un type
implémentant une interface, quel membre de ce type implémente un membre
donné de cette interface. Je vois que reflector sait le faire. Une
fonction
simple pour obtenir ça ? J'ai tourné la doc dans tous les sens et pas
mal
surfé sans succès.



D'avance merci.