IMessageFilterTable<TFilterData> IMessageFilterTable<TFilterData> IMessageFilterTable<TFilterData> IMessageFilterTable<TFilterData> Interface

Definition

Eine interface, die den Vertrag definiert, den eine Filtertabelle implementieren muss, um Nachrichten mit aus einem oder mehreren Filtern abgeleiteten Abfragekriterien zu überprüfen.An interface that defines the contract that a filter table must implement to inspect messages with query criteria derived from one or more filters.

generic <typename TFilterData>
public interface class IMessageFilterTable : System::Collections::Generic::ICollection<System::Collections::Generic::KeyValuePair<System::ServiceModel::Dispatcher::MessageFilter ^, TFilterData>>, System::Collections::Generic::IDictionary<System::ServiceModel::Dispatcher::MessageFilter ^, TFilterData>, System::Collections::Generic::IEnumerable<System::Collections::Generic::KeyValuePair<System::ServiceModel::Dispatcher::MessageFilter ^, TFilterData>>
public interface IMessageFilterTable<TFilterData> : System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<System.ServiceModel.Dispatcher.MessageFilter,TFilterData>>, System.Collections.Generic.IDictionary<System.ServiceModel.Dispatcher.MessageFilter,TFilterData>, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.ServiceModel.Dispatcher.MessageFilter,TFilterData>>
type IMessageFilterTable<'FilterData> = interface
    interface IDictionary<MessageFilter, 'FilterData>
    interface ICollection<KeyValuePair<MessageFilter, 'FilterData>>
    interface seq<KeyValuePair<MessageFilter, 'FilterData>>
    interface IEnumerable
Public Interface IMessageFilterTable(Of TFilterData)
Implements ICollection(Of KeyValuePair(Of MessageFilter, TFilterData)), IDictionary(Of MessageFilter, TFilterData), IEnumerable(Of KeyValuePair(Of MessageFilter, TFilterData))

Typparameter

TFilterData

Der Typ von Daten, der jedem Filter in der Tabelle zugeordnet ist.The type of data associated with each filter in the table.

Abgeleitet
Implementiert

Hinweise

Die Filtertabelle ist eine Kernkomponente der Filter-Engine.The filter table is a core component of the filter engine. Der primäre Verwendungszweck der Filter-Modul in Windows Communication Foundation (WCF) ist entsprechend der Anwendungslogik mit Nachrichten durch die alle Filter gesucht, die eine Nachricht zu entsprechen.The primary use of the filter engine in Windows Communication Foundation (WCF) is to match application logic to messages by finding all the filters that match a message.

Eine Filtertabelle ermöglicht es, mehrere Filter effizienter mit einer einzigen Nachricht zu abzugleichen als dies bei separaten Vorgängen möglich wäre.A filter table allows multiple filters to be matched against a single message more efficiently than they can be matched separately. Eine Filtertabelle ordnet Filterdaten Filtern zu.A filter table associates filter data with filters. Die Tabelle ist eine Auflistung von Schlüssel-Wert-Paaren, wobei der Schlüssel der MessageFilter ist und der Wert die zugeordneten Filterdaten.The table is a collection of key-value pairs, where the key is the MessageFilter, and the value is the associated filter data. Filterdaten können alle Daten des Typs sein, der im generischen Parameter angegeben ist. Sie können verwendet werden, um die Aktionen anzugeben, die durchgeführt werden sollen, wenn eine Übereinstimmung zwischen einer Nachricht und einem Filter in der Tabelle gefunden wird.Filter data can be any data of the type specified in the generic parameter and can be used to specify what actions to take if a message is matched by a filter in the table.

Auf Filtertabelleneinträge kann mit der IDictionary<TKey,TValue>-Funktion zugegriffen werden, die IMessageFilterTable<TFilterData> erbt.Filter table entries can be accessed using the IDictionary<TKey,TValue> functionality that IMessageFilterTable<TFilterData> inherits.

Beachten Sie, dass einer gegebenen IMessageFilterTable<TFilterData> eine Filterinstanz nur einmal hinzugefügt werden kann.Note that a filter instance can only be added to a given IMessageFilterTable<TFilterData> once. Um mehrere Instanzen dieses Filters zur selben Filtertabelle hinzuzufügen, verwenden Sie einen Filterkonstruktor, mit dem Sie weitere Instanzen erstellen.To add multiple instances of this filter to the same filter table, use a filter constructor to create additional instances.

Ein Filter stimmt mit einer Nachricht überein, wenn die Nachricht die Abfragekriterien des Filters erfüllt.A filter matches a message when the message satisfies the query criteria of the filter. Es gibt vier überladene Abgleichmethoden.There are four overloaded matching methods. Die zurückgegebenen Daten sind entweder die Filterdaten oder die MessageFilter-Objekte selbst.The data returned is either the filter data or the MessageFilter objects themselves. Diese Daten werden zurückgegeben, unabhängig davon, ob mehrere Übereinstimmungen oder nur eine einzige Übereinstimmung zulässig sind.This data is returned whether multiple matches are allowed or only a single match. In der folgenden Tabelle werden diese Informationen für jede Überladung dargestellt.The following table shows this information for each overload.

MethodennameMethod Name ÜbereinstimmungenMatches Zurückgegebene DatenData Returned
GetMatchingValue SingleSingle FilterData
GetMatchingFilter SingleSingle MessageFilter
GetMatchingValues MehrereMultiple FilterData
GetMatchingFilters MehrereMultiple MessageFilter-ObjekteMessageFilter objects

Jede Methode enthält zwei Überladungen.Each method contains two overloads. Der Unterschied zwischen den zwei Überladungen besteht darin, dass eine Überladung einen Message-Parameter entgegennimmt und den Textinhalt nicht überprüfen darf, während die andere einen MessageBuffer-Parameter entgegennimmt und alle Teile der Nachricht überprüfen kann.The difference between the two overloads is that one takes a Message parameter and is not permitted to examine the contents of the body; the other takes a MessageBuffer parameter and can examine any part of the message. Wenn Sie eine Methode mit dem Nachrichtenparameter aufrufen und die Filtertabelle einen Filter enthält, der den Inhalt des Nachrichtentexts überprüft, wird eine Ausnahme ausgelöst.If you call a method with the message parameter, and the filter table contains a filter that examines the content of the message body, an exception is thrown. Falls Sie sich nicht sicher sind, ob die Tabelle einen entsprechenden Filter enthält, rufen Sie die Überladung auf, die einen Nachrichtenpuffer entgegennimmt.If you are unsure about the filters in a table, call the overload that takes a message buffer.

Nachrichtenheader werden automatisch gepuffert und können durch einen Filter geprüft werden, ohne verwendet zu werden.Message headers are automatically buffered and can be inspected by a filter without being consumed. Wenn jedoch der Text durch einen Filter überprüft werden soll, muss die gesamte Nachricht gepuffert werden, da eine nicht gepufferte Nachricht durch eine Abfrage verwendet und ihr Inhalt zerstört wird.But if the body is to be inspected by a filter, then the entire message must be buffered because an unbuffered message body is consumed by a query and its contents destroyed.

Die folgenden Klassen implementieren IMessageFilterTable<TFilterData>:The following classes implement IMessageFilterTable<TFilterData>:

Methoden

Add(T) Add(T) Add(T) Add(T)

Fügt der ICollection<T> ein Element hinzu.Adds an item to the ICollection<T>.

(Inherited from ICollection<T>)
Add(TKey, TValue) Add(TKey, TValue) Add(TKey, TValue) Add(TKey, TValue)

Fügt der IDictionary<TKey,TValue>-Schnittstelle ein Element mit dem angegebenen Schlüssel und Wert hinzu.Adds an element with the provided key and value to the IDictionary<TKey,TValue>.

(Inherited from IDictionary<TKey,TValue>)
Clear() Clear() Clear() Clear()

Entfernt alle Elemente aus ICollection<T>.Removes all items from the ICollection<T>.

(Inherited from ICollection<T>)
Contains(T) Contains(T) Contains(T) Contains(T)

Ermittelt, ob die ICollection<T> einen bestimmten Wert enthält.Determines whether the ICollection<T> contains a specific value.

(Inherited from ICollection<T>)
ContainsKey(TKey) ContainsKey(TKey) ContainsKey(TKey) ContainsKey(TKey)

Ermittelt, ob das IDictionary<TKey,TValue> ein Element mit dem angegebenen Schlüssel enthält.Determines whether the IDictionary<TKey,TValue> contains an element with the specified key.

(Inherited from IDictionary<TKey,TValue>)
CopyTo(T[], Int32) CopyTo(T[], Int32) CopyTo(T[], Int32) CopyTo(T[], Int32)

Kopiert die Elemente der ICollection<T> in ein Array, beginnend bei einem bestimmten Array-Index.Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.

(Inherited from ICollection<T>)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Gibt einen Enumerator zurück, der eine Auflistung durchläuft.Returns an enumerator that iterates through a collection.

(Inherited from IEnumerable)
GetMatchingFilter(Message, MessageFilter) GetMatchingFilter(Message, MessageFilter) GetMatchingFilter(Message, MessageFilter) GetMatchingFilter(Message, MessageFilter)

Gibt einen Wert zurück, der angibt, ob das Übereinstimmungskriterium exakt eines Filters in der Tabelle durch die angegebene Nachricht erfüllt wird, und gibt diesen Filter in einem out-Parameter zurück.Returns a value that indicates whether the match criterion of exactly one filter in the table is satisfied by the specified message, and returns that filter in an out parameter.

GetMatchingFilter(MessageBuffer, MessageFilter) GetMatchingFilter(MessageBuffer, MessageFilter) GetMatchingFilter(MessageBuffer, MessageFilter) GetMatchingFilter(MessageBuffer, MessageFilter)

Gibt einen Wert zurück, der angibt, ob das Übereinstimmungskriterium exakt eines Filters in der Tabelle durch die angegebene Nachricht oder die gepufferte Nachricht erfüllt wird, und gibt diesen Filter in einem out-Parameter zurück.Returns a value that indicates whether the match criterion of exactly one filter in the table is satisfied by the specified message or buffered message, and returns that filter in an out parameter.

GetMatchingFilters(Message, ICollection<MessageFilter>) GetMatchingFilters(Message, ICollection<MessageFilter>) GetMatchingFilters(Message, ICollection<MessageFilter>) GetMatchingFilters(Message, ICollection<MessageFilter>)

Gibt einen Wert zurück, der angibt, ob das Übereinstimmungskriterium eines Filters in der Tabelle durch die angegebene Nachricht erfüllt wird und die übereinstimmenden Filter einer Auflistung hinzufügt.Returns a value that indicates whether the match criterion of a filter in the table is satisfied by the specified message, and adds the matching filters to a collection.

GetMatchingFilters(MessageBuffer, ICollection<MessageFilter>) GetMatchingFilters(MessageBuffer, ICollection<MessageFilter>) GetMatchingFilters(MessageBuffer, ICollection<MessageFilter>) GetMatchingFilters(MessageBuffer, ICollection<MessageFilter>)

Gibt einen Wert zurück, der angibt, ob das Übereinstimmungskriterium eines Filters in der Tabelle durch die angegebene gepufferte Nachricht erfüllt wird und die übereinstimmenden Filter einer Auflistung hinzufügt.Returns a value that indicates whether the match criterion of a filter in the table is satisfied by the specified buffered message, and adds the matching filters to a collection.

GetMatchingValue(Message, TFilterData) GetMatchingValue(Message, TFilterData) GetMatchingValue(Message, TFilterData) GetMatchingValue(Message, TFilterData)

Gibt einen Wert zurück, der angibt, ob das Übereinstimmungskriterium exakt eines Filters in der Tabelle durch die angegebene Nachricht erfüllt wird und fügt die übereinstimmenden Filterdaten einer Auflistung hinzu.Returns a value that indicates whether the match criterion of exactly one filter in the table is satisfied by the specified message, and adds the matching filter data to a collection.

GetMatchingValue(MessageBuffer, TFilterData) GetMatchingValue(MessageBuffer, TFilterData) GetMatchingValue(MessageBuffer, TFilterData) GetMatchingValue(MessageBuffer, TFilterData)

Gibt einen Wert zurück, der angibt, ob das Übereinstimmungskriterium exakt eines Filters in der Tabelle durch die angegebene gepufferte Nachricht erfüllt wird und die übereinstimmenden Filterdaten einer Auflistung hinzufügt.Returns a value that indicates whether the match criterion of exactly one filter in the table is satisfied by the specified buffered message, and adds the matching filter data to a collection.

GetMatchingValues(Message, ICollection<TFilterData>) GetMatchingValues(Message, ICollection<TFilterData>) GetMatchingValues(Message, ICollection<TFilterData>) GetMatchingValues(Message, ICollection<TFilterData>)

Gibt einen Wert zurück, der angibt, ob das Übereinstimmungskriterium mindestens eines Filters in der Tabelle durch die angegebene Nachricht erfüllt wird und die FilterData der übereinstimmenden Filter einer Auflistung hinzufügt.Returns a value that indicates whether the match criterion of at least one filter in the table is satisfied by the specified message, and adds the FilterData of the matching filters to a collection.

GetMatchingValues(MessageBuffer, ICollection<TFilterData>) GetMatchingValues(MessageBuffer, ICollection<TFilterData>) GetMatchingValues(MessageBuffer, ICollection<TFilterData>) GetMatchingValues(MessageBuffer, ICollection<TFilterData>)

Gibt einen Wert zurück, der angibt, ob das Übereinstimmungskriterium mindestens eines Filters in der Tabelle durch die angegebene gepufferte Nachricht erfüllt wird und die FilterData der übereinstimmenden Filter einer Auflistung hinzufügt.Returns a value that indicates whether the match criterion of at least one filter in the table is satisfied by the specified buffered message, and adds the FilterData of the matching filters to a collection.

Remove(TKey) Remove(TKey) Remove(TKey) Remove(TKey)

Entfernt das Element mit dem angegebenen Schlüssel aus dem IDictionary<TKey,TValue>.Removes the element with the specified key from the IDictionary<TKey,TValue>.

(Inherited from IDictionary<TKey,TValue>)
TryGetValue(TKey, TValue) TryGetValue(TKey, TValue) TryGetValue(TKey, TValue) TryGetValue(TKey, TValue)

Ruft den dem angegebenen Schlüssel zugeordneten Wert ab.Gets the value associated with the specified key.

(Inherited from IDictionary<TKey,TValue>)

Eigenschaften

Count Count Count Count

Ruft die Anzahl der Elemente ab, die in ICollection<T> enthalten sind.Gets the number of elements contained in the ICollection<T>.

(Inherited from ICollection<T>)
IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Ruft einen Wert ab, der angibt, ob das ICollection<T> schreibgeschützt ist.Gets a value indicating whether the ICollection<T> is read-only.

(Inherited from ICollection<T>)
Item[TKey] Item[TKey] Item[TKey] Item[TKey]

Ruft das Element mit dem angegebenen Schlüssel ab oder legt dieses fest.Gets or sets the element with the specified key.

(Inherited from IDictionary<TKey,TValue>)
Keys Keys Keys Keys

Ruft eine ICollection<T> ab, die die Schlüssel des IDictionary<TKey,TValue> enthält.Gets an ICollection<T> containing the keys of the IDictionary<TKey,TValue>.

(Inherited from IDictionary<TKey,TValue>)
Values Values Values Values

Ruft eine ICollection<T> ab, die die Werte im IDictionary<TKey,TValue> enthält.Gets an ICollection<T> containing the values in the IDictionary<TKey,TValue>.

(Inherited from IDictionary<TKey,TValue>)

Erweiterungsmethoden

CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>)

Gibt eine DataTable zurück, die Kopien der DataRow-Objekte enthält, wenn ein IEnumerable<T>-Eingabeobjekt vorhanden ist, bei dem der generische Parameter T den Wert DataRow hat.Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

Kopiert DataRow-Objekte in die angegebene DataTable, bei einem IEnumerable<T>-Eingabeobjekt, bei dem der generische Parameter T den Wert DataRow aufweist.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

Kopiert DataRow-Objekte in die angegebene DataTable, bei einem IEnumerable<T>-Eingabeobjekt, bei dem der generische Parameter T den Wert DataRow aufweist.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ umCasts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Filtert die Elemente eines IEnumerable anhand eines angegebenen TypsFilters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Ermöglicht die Parallelisierung einer Abfrage.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

Konvertiert einen IEnumerable in einen IQueryable.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>)

Gibt eine Auflistung von Elementen zurück, die die übergeordneten Elemente der einzelnen Knoten in der Quellauflistung enthält.Returns a collection of elements that contains the ancestors of every node in the source collection.

Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName)

Gibt eine gefilterte Auflistung von Elementen zurück, die die übergeordneten Elemente der einzelnen Knoten in der Quellauflistung enthält.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Nur Elemente, die über einen übereinstimmenden XName verfügen, sind in der Auflistung enthalten.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>)

Gibt eine Auflistung der Nachfolgerknoten jedes Dokuments und Elements in der Quellauflistung zurück.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>)

Gibt eine Auflistung von Elementen zurück, die die Nachfolgerelemente jedes Elements und Dokuments in der Quellauflistung enthält.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName)

Gibt eine gefilterte Auflistung von Elementen zurück, die die Nachfolgerelemente jedes Elements und Dokuments in der Quellauflistung enthält.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Nur Elemente, die über einen übereinstimmenden XName verfügen, sind in der Auflistung enthalten.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>)

Gibt eine Auflistung der untergeordneten Elemente jedes Elements und Dokuments in der Quellauflistung zurück.Returns a collection of the child elements of every element and document in the source collection.

Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName)

Gibt eine gefilterte Auflistung der untergeordneten Elemente jedes Elements und Dokuments in der Quellauflistung zurück.Returns a filtered collection of the child elements of every element and document in the source collection. Nur Elemente, die über einen übereinstimmenden XName verfügen, sind in der Auflistung enthalten.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>)

Gibt eine in Dokumentreihenfolge sortierte Auflistung von Knoten zurück, die alle Knoten in der Quellauflistung enthält.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>)

Gibt eine Auflistung der untergeordneten Knoten jedes Dokuments und Elements in der Quellauflistung zurück.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>)

Entfernt jeden Knoten in der Quellauflistung aus seinem übergeordneten Knoten.Removes every node in the source collection from its parent node.

Gilt für:

Threadsicherheit

Filtertabellen sind in Bezug auf das Abgleichen von Vorgängen threadsicher, in Bezug auf Änderungen sind sie jedoch nicht threadsicher.Filter tables are thread-safe with respect to matching operations, but are not thread-safe with respect to modification. Threads, die auf eine Filtertabelle zugreifen, sollten durch ReaderWriterLock oder eine ähnliche Sperrsemantik synchronisiert werden.Threads that access a filter table should be synchronized by the ReaderWriterLock or similar locking semantic. Diese Sperre lässt das Ausführen mehrerer Lesevorgänge der Filtertabelle (beispielsweise für einen Abgleichvorgang) gleichzeitig zu. Um jedoch in eine Filtertabelle zu schreiben (beispielsweise, um einen Filter hinzuzufügen), muss ein Thread auf eine exklusive Sperre warten.This lock allows multiple reads of a filter table (for example, a match operation) to run simultaneously, but in order to write to a filter table (for example, adding a filter), a thread must wait for an exclusive lock.

Die gesamte Kompilierung wird durchgeführt, wenn der Tabelle Filter hinzugefügt werden.All compilation is done when filters are added to the table. Wenn Sie eine Filtertabelle im Voraus erstellen und diese nicht bearbeiten werden, ist keine Sperre während eines Abgleichvorgangs erforderlich.If you create a filter table in advance, and never edit it, locking is not necessary during a match.