Type.GetInterface Metoda

Definicja

Pobiera określony interfejs zaimplementowany lub dziedziczony przez bieżący Typeelement .

Przeciążenia

GetInterface(String)

Wyszukuje interfejs o określonej nazwie.

GetInterface(String, Boolean)

Po przesłonięciu w klasie pochodnej wyszukuje określony interfejs, określając, czy należy wyszukać nazwę interfejsu bez uwzględniania wielkości liter.

GetInterface(String)

Źródło:
Type.cs
Źródło:
Type.cs
Źródło:
Type.cs

Wyszukuje interfejs o określonej nazwie.

public Type? GetInterface (string name);
public Type GetInterface (string name);

Parametry

name
String

Ciąg zawierający nazwę interfejsu do pobrania. W przypadku interfejsów ogólnych jest to nazwa mangled.

Zwraca

Obiekt reprezentujący interfejs o określonej nazwie, zaimplementowany lub dziedziczony przez bieżący Typeobiekt , jeśli zostanie znaleziony; w przeciwnym razie null.

Implementuje

Wyjątki

name to null.

Bieżący Type reprezentuje typ, który implementuje ten sam interfejs ogólny z różnymi argumentami typu.

Przykłady

Poniższy przykład kodu używa GetInterface(String) metody do wyszukiwania Hashtable klasy dla interfejsu IDeserializationCallback i zawiera listę metod interfejsu.

Przykładowy kod pokazuje GetInterface(String, Boolean) również przeciążenie metody i metodę GetInterfaceMap .

public static void Main()
{
    Hashtable hashtableObj = new Hashtable();
    Type objType = hashtableObj.GetType();
    MethodInfo[] arrayMethodInfo;
    MemberInfo[] arrayMemberInfo;
    try
    {
        // Get the methods implemented in 'IDeserializationCallback' interface.
        arrayMethodInfo =objType.GetInterface("IDeserializationCallback").GetMethods();
        Console.WriteLine ("\nMethods of 'IDeserializationCallback' Interface :");
        foreach(MethodInfo methodInfo in arrayMethodInfo)
            Console.WriteLine (methodInfo);

        // Get FullName for interface by using Ignore case search.
        Console.WriteLine ("\nMethods of 'IEnumerable' Interface");
        arrayMethodInfo = objType.GetInterface("ienumerable",true).GetMethods();
        foreach(MethodInfo methodInfo in arrayMethodInfo)
           Console.WriteLine (methodInfo);

        //Get the Interface methods for 'IDictionary' interface
        InterfaceMapping interfaceMappingOb = objType.GetInterfaceMap(typeof(IDictionary));
        arrayMemberInfo = interfaceMappingObj.InterfaceMethods;
        Console.WriteLine ("\nHashtable class Implements the following IDictionary Interface methods :");
        foreach(MemberInfo memberInfo in arrayMemberInfo)
           Console.WriteLine (memberInfo);
    }
    catch (Exception e)
    {
        Console.WriteLine ("Exception : " + e.ToString());
    }
}

Uwagi

Wyszukiwanie name jest uwzględniane w wielkości liter.

Jeśli bieżący Type reprezentuje skonstruowany typ ogólny, ta metoda zwraca Type parametry typu zastąpione przez odpowiednie argumenty typu.

Jeśli bieżący Type reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda wyszukuje ograniczenia interfejsu i wszelkie interfejsy dziedziczone z ograniczeń klasy lub interfejsu.

Uwaga

W przypadku interfejsów name ogólnych parametr jest nazwą mangled, kończącą się akcentem grobowym (') i liczbą parametrów typu. Dotyczy to zarówno ogólnych definicji interfejsu, jak i skonstruowanych interfejsów ogólnych. Aby na przykład znaleźć IExample<T> (IExample(Of T) w Visual Basic) lub IExample<string> (IExample(Of String) w Visual Basic), wyszukaj ciąg "IExample`1".

Zobacz też

Dotyczy

net-7.0 net-7.0
Produkt Wersje
net-7.0 net-7.0

GetInterface(String, Boolean)

Źródło:
Type.cs
Źródło:
Type.cs
Źródło:
Type.cs

Po przesłonięciu w klasie pochodnej wyszukuje określony interfejs, określając, czy należy wyszukać nazwę interfejsu bez uwzględniania wielkości liter.

public abstract Type? GetInterface (string name, bool ignoreCase);
public abstract Type GetInterface (string name, bool ignoreCase);

Parametry

name
String

Ciąg zawierający nazwę interfejsu do pobrania. W przypadku interfejsów ogólnych jest to nazwa mangled.

ignoreCase
Boolean

true aby zignorować przypadek tej name części, która określa prostą nazwę interfejsu (część określająca przestrzeń nazw musi być poprawnie przypadek).

-lub-

false aby wykonać wyszukiwanie w przypadku dla wszystkich części obiektu name.

Zwraca

Obiekt reprezentujący interfejs o określonej nazwie, zaimplementowany lub dziedziczony przez bieżący Typeobiekt , jeśli zostanie znaleziony; w przeciwnym razie null.

Implementuje

Wyjątki

name to null.

Bieżący Type reprezentuje typ, który implementuje ten sam interfejs ogólny z różnymi argumentami typu.

Przykłady

Poniższy przykład kodu używa GetInterface(String, Boolean) metody do przeprowadzania niewrażliwego na wielkość liter wyszukiwania Hashtable klasy dla interfejsu IEnumerable .

Przykładowy kod pokazuje GetInterface(String) również przeciążenie metody i metodę GetInterfaceMap .

public static void Main()
{
    Hashtable hashtableObj = new Hashtable();
    Type objType = hashtableObj.GetType();
    MethodInfo[] arrayMethodInfo;
    MemberInfo[] arrayMemberInfo;
    try
    {
        // Get the methods implemented in 'IDeserializationCallback' interface.
        arrayMethodInfo =objType.GetInterface("IDeserializationCallback").GetMethods();
        Console.WriteLine ("\nMethods of 'IDeserializationCallback' Interface :");
        foreach(MethodInfo methodInfo in arrayMethodInfo)
            Console.WriteLine (methodInfo);

        // Get FullName for interface by using Ignore case search.
        Console.WriteLine ("\nMethods of 'IEnumerable' Interface");
        arrayMethodInfo = objType.GetInterface("ienumerable",true).GetMethods();
        foreach(MethodInfo methodInfo in arrayMethodInfo)
           Console.WriteLine (methodInfo);

        //Get the Interface methods for 'IDictionary' interface
        InterfaceMapping interfaceMappingOb = objType.GetInterfaceMap(typeof(IDictionary));
        arrayMemberInfo = interfaceMappingObj.InterfaceMethods;
        Console.WriteLine ("\nHashtable class Implements the following IDictionary Interface methods :");
        foreach(MemberInfo memberInfo in arrayMemberInfo)
           Console.WriteLine (memberInfo);
    }
    catch (Exception e)
    {
        Console.WriteLine ("Exception : " + e.ToString());
    }
}

Uwagi

Parametr ignoreCase dotyczy tylko prostej nazwy interfejsu, a nie przestrzeni nazw. Część określająca name przestrzeń nazw musi mieć prawidłowy przypadek lub interfejs nie zostanie znaleziony. Na przykład ciąg "System.icomparable" znajduje IComparable interfejs, ale ciąg "system.icomparable" nie.

Jeśli bieżący Type reprezentuje skonstruowany typ ogólny, ta metoda zwraca Type parametry typu zastąpione przez odpowiednie argumenty typu.

Jeśli bieżący Type reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda wyszukuje ograniczenia interfejsu i wszelkie interfejsy dziedziczone z ograniczeń klasy lub interfejsu.

Uwaga

W przypadku interfejsów name ogólnych parametr jest nazwą mangled, kończącą się akcentem grobowym (') i liczbą parametrów typu. Dotyczy to zarówno ogólnych definicji interfejsu, jak i skonstruowanych interfejsów ogólnych. Aby na przykład znaleźć IExample<T> (IExample(Of T) w Visual Basic) lub IExample<string> (IExample(Of String) w Visual Basic), wyszukaj ciąg "IExample`1".

Zobacz też

Dotyczy

net-7.0 net-7.0
Produkt Wersje
net-7.0 net-7.0