﻿<?xml version="1.0" encoding="utf-8"?><Type Name="IMessageFilterTable&lt;TFilterData&gt;" FullName="System.ServiceModel.Dispatcher.IMessageFilterTable&lt;TFilterData&gt;"><TypeSignature Language="C#" Value="public interface IMessageFilterTable&lt;TFilterData&gt; : System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;System.ServiceModel.Dispatcher.MessageFilter,TFilterData&gt;&gt;, System.Collections.Generic.IDictionary&lt;System.ServiceModel.Dispatcher.MessageFilter,TFilterData&gt;, System.Collections.Generic.IEnumerable&lt;System.Collections.Generic.KeyValuePair&lt;System.ServiceModel.Dispatcher.MessageFilter,TFilterData&gt;&gt;" /><TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IMessageFilterTable`1&lt;TFilterData&gt; implements class System.Collections.Generic.ICollection`1&lt;valuetype System.Collections.Generic.KeyValuePair`2&lt;class System.ServiceModel.Dispatcher.MessageFilter, !TFilterData&gt;&gt;, class System.Collections.Generic.IDictionary`2&lt;class System.ServiceModel.Dispatcher.MessageFilter, !TFilterData&gt;, class System.Collections.Generic.IEnumerable`1&lt;valuetype System.Collections.Generic.KeyValuePair`2&lt;class System.ServiceModel.Dispatcher.MessageFilter, !TFilterData&gt;&gt;, class System.Collections.IEnumerable" /><AssemblyInfo><AssemblyName>System.ServiceModel</AssemblyName><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><TypeParameters><TypeParameter Name="TFilterData" /></TypeParameters><Interfaces><Interface><InterfaceName>System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;System.ServiceModel.Dispatcher.MessageFilter,TFilterData&gt;&gt;</InterfaceName></Interface><Interface><InterfaceName>System.Collections.Generic.IDictionary&lt;System.ServiceModel.Dispatcher.MessageFilter,TFilterData&gt;</InterfaceName></Interface><Interface><InterfaceName>System.Collections.Generic.IEnumerable&lt;System.Collections.Generic.KeyValuePair&lt;System.ServiceModel.Dispatcher.MessageFilter,TFilterData&gt;&gt;</InterfaceName></Interface></Interfaces><Docs><typeparam name="TFilterData">To be added.</typeparam><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The filter table is a core component of the filter engine. The primary use of the filter engine in indigo1 is to match application logic to messages by finding all the filters that match a message. </para><para>A filter table allows multiple filters to be matched against a single message more efficiently than they can be matched separately. A filter table associates filter data with filters. The table is a collection of key-value pairs, where the key is the <see cref="T:System.ServiceModel.Dispatcher.MessageFilter" />, and the value is the associated filter data. 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. </para><para>Filter table entries can be accessed using the <see cref="T:System.Collections.Generic.IDictionary`2" /> functionality that <see cref="T:System.ServiceModel.Dispatcher.IMessageFilterTable`1" /> inherits. </para><para>Note that a filter instance can only be added to a given <see cref="T:System.ServiceModel.Dispatcher.IMessageFilterTable`1" /> once. To add multiple instances of this filter to the same filter table, use a filter constructor to create additional instances.</para><para>A filter matches a message when the message satisfies the query criteria of the filter. There are four overloaded matching methods. The data returned is either the filter data or the <see cref="T:System.ServiceModel.Dispatcher.MessageFilter" /> objects themselves. This data is returned whether multiple matches are allowed or only a single match. The following table shows this information for each overload.</para><list type="table"><listheader><item><term><para>Method Name</para></term><description><para>Matches</para></description><description><para>Data Returned</para></description></item></listheader><item><term><para><see cref="Overload:System.ServiceModel.Dispatcher.IMessageFilterTable`1.GetMatchingValue" /></para></term><description><para>Single </para></description><description><para><paramref name="FilterData" /></para></description></item><item><term><para><see cref="Overload:System.ServiceModel.Dispatcher.IMessageFilterTable`1.GetMatchingFilter" /></para></term><description><para>Single </para></description><description><para><see cref="T:System.ServiceModel.Dispatcher.MessageFilter" /></para></description></item><item><term><para><see cref="Overload:System.ServiceModel.Dispatcher.IMessageFilterTable`1.GetMatchingValues" /></para></term><description><para>Multiple </para></description><description><para><paramref name="FilterData" /></para></description></item><item><term><para><see cref="Overload:System.ServiceModel.Dispatcher.IMessageFilterTable`1.GetMatchingFilters" /></para></term><description><para>Multiple </para></description><description><para><see cref="T:System.ServiceModel.Dispatcher.MessageFilter" /> objects</para></description></item></list><para>Each method contains two overloads. The difference between the two overloads is that one takes a <see cref="T:System.ServiceModel.Channels.Message" /> parameter and is not permitted to examine the contents of the body; the other takes a <see cref="T:System.ServiceModel.Channels.MessageBuffer" /> parameter and can examine any part of the message. 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. If you are unsure about the filters in a table, call the overload that takes a message buffer.</para><para>Message headers are automatically buffered and can be inspected by a filter without being consumed. 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.</para><para>The following classes implement <see cref="T:System.ServiceModel.Dispatcher.IMessageFilterTable`1" />: </para><list type="bullet"><item><para><see cref="T:System.ServiceModel.Dispatcher.MessageFilterTable`1" /></para></item><item><para><see cref="T:System.ServiceModel.Dispatcher.XPathMessageFilterTable`1" /></para></item></list></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>An interface that defines the contract that a filter table must implement to inspect messages with query criteria derived from one or more filters.</para></summary></Docs><Members><Member MemberName="GetMatchingFilter"><MemberSignature Language="C#" Value="public bool GetMatchingFilter (System.ServiceModel.Channels.Message message, out System.ServiceModel.Dispatcher.MessageFilter result);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool GetMatchingFilter(class System.ServiceModel.Channels.Message message, class System.ServiceModel.Dispatcher.MessageFilter result) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="message" Type="System.ServiceModel.Channels.Message" /><Parameter Name="result" Type="System.ServiceModel.Dispatcher.MessageFilter&amp;" RefType="out" /></Parameters><Docs><param name="message">To be added.</param><param name="result">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetMatchingFilter"><MemberSignature Language="C#" Value="public bool GetMatchingFilter (System.ServiceModel.Channels.MessageBuffer buffer, out System.ServiceModel.Dispatcher.MessageFilter result);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool GetMatchingFilter(class System.ServiceModel.Channels.MessageBuffer buffer, class System.ServiceModel.Dispatcher.MessageFilter result) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="buffer" Type="System.ServiceModel.Channels.MessageBuffer" /><Parameter Name="result" Type="System.ServiceModel.Dispatcher.MessageFilter&amp;" RefType="out" /></Parameters><Docs><param name="buffer">To be added.</param><param name="result">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetMatchingFilters"><MemberSignature Language="C#" Value="public bool GetMatchingFilters (System.ServiceModel.Channels.Message message, System.Collections.Generic.ICollection&lt;System.ServiceModel.Dispatcher.MessageFilter&gt; results);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool GetMatchingFilters(class System.ServiceModel.Channels.Message message, class System.Collections.Generic.ICollection`1&lt;class System.ServiceModel.Dispatcher.MessageFilter&gt; results) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="message" Type="System.ServiceModel.Channels.Message" /><Parameter Name="results" Type="System.Collections.Generic.ICollection&lt;System.ServiceModel.Dispatcher.MessageFilter&gt;" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Use this method when more than one filter is expected to match the message, the matching filters are required, and the body of the message does not have to be inspected.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>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.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>true if the match criterion of at least one filter in the table is satisfied by <paramref name="message" />; false if no filter is satisfied.</para></returns><param name="message"><attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.ServiceModel.Channels.Message" /> to test.</param><param name="results"><attribution license="cc4" from="Microsoft" modified="false" />Reference parameter that stores the <see cref="T:System.ServiceModel.Dispatcher.MessageFilter" /> objects that match in <see cref="T:System.Collections.Generic.ICollection`1" />&lt;Filter&gt;.</param></Docs></Member><Member MemberName="GetMatchingFilters"><MemberSignature Language="C#" Value="public bool GetMatchingFilters (System.ServiceModel.Channels.MessageBuffer buffer, System.Collections.Generic.ICollection&lt;System.ServiceModel.Dispatcher.MessageFilter&gt; results);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool GetMatchingFilters(class System.ServiceModel.Channels.MessageBuffer buffer, class System.Collections.Generic.ICollection`1&lt;class System.ServiceModel.Dispatcher.MessageFilter&gt; results) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="buffer" Type="System.ServiceModel.Channels.MessageBuffer" /><Parameter Name="results" Type="System.Collections.Generic.ICollection&lt;System.ServiceModel.Dispatcher.MessageFilter&gt;" /></Parameters><Docs><param name="buffer">To be added.</param><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Use this method when more than one filter is expected to match the buffered message, the matching filter is required, and the body of the message may have to be inspected.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>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.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>true if the match criterion of at least one filter in the table is satisfied by <paramref name="messageBuffer" />; false if no filter is satisfied.</para></returns><param name="results"><attribution license="cc4" from="Microsoft" modified="false" />Reference parameter that stores the <see cref="T:System.ServiceModel.Dispatcher.MessageFilter" /> objects that match in <see cref="T:System.Collections.Generic.ICollection`1" />&lt;Filter&gt;.</param></Docs></Member><Member MemberName="GetMatchingValue"><MemberSignature Language="C#" Value="public bool GetMatchingValue (System.ServiceModel.Channels.Message message, out TFilterData data);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool GetMatchingValue(class System.ServiceModel.Channels.Message message, !TFilterData data) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="message" Type="System.ServiceModel.Channels.Message" /><Parameter Name="data" Type="TFilterData&amp;" RefType="out" /></Parameters><Docs><param name="message">To be added.</param><param name="data">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetMatchingValue"><MemberSignature Language="C#" Value="public bool GetMatchingValue (System.ServiceModel.Channels.MessageBuffer buffer, out TFilterData data);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool GetMatchingValue(class System.ServiceModel.Channels.MessageBuffer buffer, !TFilterData data) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="buffer" Type="System.ServiceModel.Channels.MessageBuffer" /><Parameter Name="data" Type="TFilterData&amp;" RefType="out" /></Parameters><Docs><param name="buffer">To be added.</param><param name="data">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetMatchingValues"><MemberSignature Language="C#" Value="public bool GetMatchingValues (System.ServiceModel.Channels.Message message, System.Collections.Generic.ICollection&lt;TFilterData&gt; results);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool GetMatchingValues(class System.ServiceModel.Channels.Message message, class System.Collections.Generic.ICollection`1&lt;!TFilterData&gt; results) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="message" Type="System.ServiceModel.Channels.Message" /><Parameter Name="results" Type="System.Collections.Generic.ICollection&lt;TFilterData&gt;" /></Parameters><Docs><param name="message">To be added.</param><param name="results">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="GetMatchingValues"><MemberSignature Language="C#" Value="public bool GetMatchingValues (System.ServiceModel.Channels.MessageBuffer buffer, System.Collections.Generic.ICollection&lt;TFilterData&gt; results);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool GetMatchingValues(class System.ServiceModel.Channels.MessageBuffer buffer, class System.Collections.Generic.ICollection`1&lt;!TFilterData&gt; results) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="buffer" Type="System.ServiceModel.Channels.MessageBuffer" /><Parameter Name="results" Type="System.Collections.Generic.ICollection&lt;TFilterData&gt;" /></Parameters><Docs><param name="buffer">To be added.</param><param name="results">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member></Members></Type>