TypeFilter Делегат
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Отфильтровывает классы, представленные в массиве объектов Type.
public delegate bool TypeFilter(Type ^ m, System::Object ^ filterCriteria);
public delegate bool TypeFilter(Type m, object? filterCriteria);
public delegate bool TypeFilter(Type m, object filterCriteria);
[System.Serializable]
public delegate bool TypeFilter(Type m, object filterCriteria);
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public delegate bool TypeFilter(Type m, object filterCriteria);
type TypeFilter = delegate of Type * obj -> bool
[<System.Serializable>]
type TypeFilter = delegate of Type * obj -> bool
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TypeFilter = delegate of Type * obj -> bool
Public Delegate Function TypeFilter(m As Type, filterCriteria As Object) As Boolean
Параметры
- m
- Type
Объект Type
, к которому применяется фильтр.
- filterCriteria
- Object
Произвольный объект, используемый для фильтрации списка.
Возвращаемое значение
Значение true
для включения объекта Type в отфильтрованный список. В противном случае — значение false
.
- Атрибуты
Примеры
В этом примере показано, как определить метод, соответствующий прототипу TypeFilter делегата, что позволяет использовать отражение для фильтрации или возврата подмножества соответствующих записей.
Imports System.Reflection
' This interface is defined in this assembly.
Public Interface IBookRetailer
Sub Purchase()
Sub ApplyDiscount()
End Interface
' This interface is also defined in this assembly.
Public Interface IMusicRetailer
Sub Purchase()
End Interface
' This class implements three interfaces;
' Two are defined in this assembly.
' One is defined in another assembly.
Public Class MyRetailer
Implements IBookRetailer, IMusicRetailer, IComparable
' For demonstration purposes, this method returns nothing.
Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo
Return Nothing
End Function
' For demonstration purposes only, this method does nothing.
Public Sub ApplyDiscount() Implements IBookRetailer.ApplyDiscount
End Sub
' For demonstration purposes only, this method does nothing.
Public Sub Purchase() Implements IBookRetailer.Purchase
End Sub
' For demonstration purposes only, this method does nothing.
Public Sub Purchase1() Implements IMusicRetailer.Purchase
End Sub
End Class
Module Module1
Sub Main()
' Find the interfaces defined by the MyRetailer class. Each interface found is passed to
' the TypeFilter method which checks if the interface is defined in the executing assembly.
Dim retailerType As Type = GetType(MyRetailer)
Dim interfaces() As Type = _
retailerType.FindInterfaces(AddressOf TypeFilter, retailerType.Assembly.GetName().ToString())
' Show the interfaces that are defined in this assembly that are also implemented by MyRetailer.
Console.WriteLine("MyRetailer implements the following interfaces (defined in this assembly):")
For Each t In interfaces
Console.WriteLine(" {0}", t.Name)
Next
End Sub
' This method is called by the FindInterfaces method.
' This method is called once per defined interface.
Function TypeFilter(ByVal t As Type, ByVal filterCriteria As Object) As Boolean
' Return true if interface is defined in the same
' assembly identified by the filterCriteria object.
Return t.Assembly.GetName().ToString() = CType(filterCriteria, String)
End Function
End Module
' The example displays the following output:
' MyRetailer implements the following interfaces (defined in this assembly):
' IBookRetailer
' IMusicRetailer
Комментарии
Делегат TypeFilter
используется для фильтрации списка классов. В частности, он используется для фильтрации классов, представленных в массиве Type объектов . Метод Type.FindInterfaces использует этот делегат для фильтрации списка интерфейсов, которые он возвращает. Каждый производный Delegate класс и MulticastDelegate имеет конструктор и DynamicInvoke
метод . См. пример кода Visual C++, приведенный в описании для Delegate
.
Методы расширения
GetMethodInfo(Delegate) |
Получает объект, представляющий метод, представленный указанным делегатом. |
Применяется к
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по