Baca dalam bahasa Inggris

Bagikan melalui


Type.FindInterfaces(TypeFilter, Object) Metode

Definisi

Mengembalikan array Type objek yang mewakili daftar antarmuka yang difilter yang diimplementasikan atau diwarisi oleh saat ini Type.

public virtual Type[] FindInterfaces(System.Reflection.TypeFilter filter, object? filterCriteria);
public virtual Type[] FindInterfaces(System.Reflection.TypeFilter filter, object filterCriteria);

Parameter

filter
TypeFilter

Delegasi yang membandingkan antarmuka dengan filterCriteria.

filterCriteria
Object

Kriteria pencarian yang menentukan apakah antarmuka harus disertakan dalam array yang dikembalikan.

Mengembalikan

Type[]

Array Type objek yang mewakili daftar antarmuka yang difilter yang diimplementasikan atau diwarisi oleh saat ini Type, atau array kosong jika tidak ada antarmuka yang cocok dengan filter yang diimplementasikan atau diwarisi oleh saat ini Type.

Penerapan

Pengecualian

filteradalah null.

Penginisialisasi statis dipanggil dan melemparkan pengecualian.

Contoh

Contoh berikut menemukan antarmuka yang ditentukan yang diimplementasikan atau diwarisi oleh jenis yang ditentukan, lalu menampilkan nama antarmuka.

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;
    }
}

Keterangan

Metode ini dapat ditimpa oleh kelas turunan.

Delegasi Module.FilterTypeName dan Module.FilterTypeNameIgnoreCase yang disediakan oleh System.Reflection.Module kelas juga dapat digunakan, sebagai pengganti System.Reflection.TypeFilter delegasi.

Semua antarmuka yang diterapkan oleh kelas ini dipertimbangkan selama pencarian, baik dideklarasikan oleh kelas dasar atau kelas ini sendiri.

Metode ini mencari hierarki kelas dasar, mengembalikan masing-masing antarmuka yang cocok yang diterapkan setiap kelas serta semua antarmuka yang cocok yang diterapkan masing-masing antarmuka tersebut (yaitu, penutupan transitif antarmuka yang cocok dikembalikan). Tidak ada antarmuka duplikat yang dikembalikan.

Jika saat ini Type mewakili parameter jenis dalam definisi jenis generik atau metode generik, FindInterfaces mencari semua antarmuka yang dideklarasikan dalam batasan pada parameter jenis, dan semua antarmuka yang diwarisi melalui antarmuka yang dideklarasikan dalam batasan. Jika saat ini Type mewakili argumen jenis dari jenis generik, FindInterfaces cari semua antarmuka yang diterapkan oleh jenis , apakah cocok dengan batasan atau tidak.

Catatan

FindInterfaces dapat mengembalikan antarmuka generik, bahkan pada jenis yang tidak generik. Misalnya, jenis nongenerik mungkin mengimplementasikan IEnumerable<int> (IEnumerable(Of Integer) di Visual Basic).

Berlaku untuk

Produk Versi
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Lihat juga