Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Type.FindInterfaces (TypeFilter, Object)

 

Publicado: octubre de 2016

Devuelve una matriz de objetos Type que representa una lista filtrada de interfaces implementadas o heredadas por el objeto Type actual.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public virtual Type[] FindInterfaces(
	TypeFilter filter,
	object filterCriteria
)

Parámetros

filter
Type: System.Reflection.TypeFilter

Delegado que compara las interfaces con filterCriteria.

filterCriteria
Type: System.Object

Criterios de búsqueda que determinan si una interfaz se debe incluir en la matriz devuelta.

Valor devuelto

Type: System.Type[]

Matriz de objetos Type que representa una lista filtrada de las interfaces implementadas o heredadas por el Type actual, o una matriz vacía de tipo Type si no hay ninguna interfaz que coincida con el filtro y que haya sido implementada o heredada por el Type actual.

Exception Condition
ArgumentNullException

El valor de filter es null.

TargetInvocationException

Se invoca un inicializador estático y produce una excepción.

Este método puede reemplazarse por una clase derivada.

El Module.FilterTypeName y Module.FilterTypeNameIgnoreCase delegados proporcionados por el System.Reflection.Module clase también puede utilizarse, en lugar de la System.Reflection.TypeFilter delegar.

Todas las interfaces implementadas por esta clase se consideran durante la búsqueda, si declara una clase base o esta clase en Sí.

Este método busca en la jerarquía de clases base, devolviendo cada una de las interfaces coincidentes que cada clase implementa, así como la coincidencia interfaces de cada uno de esos implementa interfaces (es decir, se devuelve el cierre transitivo de las interfaces coincidentes). No hay ninguna interfaz duplicada se devuelve.

Si la actual Type representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, FindInterfaces busca todas las interfaces declaradas en las restricciones en el parámetro de tipo y todas las interfaces que se heredan a través de las interfaces declaran en las restricciones. Si la actual Type representa un argumento de tipo de un tipo genérico, FindInterfaces busca todas las interfaces implementadas por el tipo, si no coinciden con las restricciones.

System_CAPS_noteNota

FindInterfacespuede devolver interfaces genéricas, incluso en tipos que no son genéricos. Por ejemplo, podría implementar un tipo no genérico IEnumerable<int> (IEnumerable(Of Integer) en Visual Basic).

En el ejemplo siguiente se busca la interfaz especificada implementada o heredada por el tipo especificado y, a continuación, muestra los nombres de interfaz.

using System;
using System.Xml;
using System.Reflection;

public class MyFindInterfacesSample 
{
    public static void Main()
    {
        try
        {
            XmlDocument myXMLDoc = new XmlDocument();
            myXMLDoc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" +
                "<title>Pride And Prejudice</title>" + "</book>");
            Type myType = myXMLDoc.GetType();

            // Specify the TypeFilter delegate that compares the 
            // interfaces against filter criteria.
            TypeFilter myFilter = new TypeFilter(MyInterfaceFilter);
            String[] myInterfaceList = new String[2] 
                {"System.Collections.IEnumerable", 
                "System.Collections.ICollection"};
            for(int index=0; index < myInterfaceList.Length; index++)
            {
                Type[] myInterfaces = myType.FindInterfaces(myFilter, 
                    myInterfaceList[index]);
                if (myInterfaces.Length > 0) 
                {
                    Console.WriteLine("\n{0} implements the interface {1}.",
                        myType, myInterfaceList[index]);	
                    for(int j =0;j < myInterfaces.Length;j++)
                        Console.WriteLine("Interfaces supported: {0}.", 
                            myInterfaces[j].ToString());
                }
                else
                    Console.WriteLine(
                        "\n{0} does not implement the interface {1}.", 
                        myType,myInterfaceList[index]);	
            }
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(TargetInvocationException e)
        {
            Console.WriteLine("TargetInvocationException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }

    public static bool MyInterfaceFilter(Type typeObj,Object criteriaObj)
    {
        if(typeObj.ToString() == criteriaObj.ToString())
            return true;
        else
            return false;
    }
}

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: