SinkProviderData-Klasse
Speichert Empfängerproviderdaten für Empfängerprovider.
Namespace: System.Runtime.Remoting.Channels
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<ComVisibleAttribute(True)> _
Public Class SinkProviderData
'Usage
Dim instance As SinkProviderData
[ComVisibleAttribute(true)]
public class SinkProviderData
[ComVisibleAttribute(true)]
public ref class SinkProviderData
/** @attribute ComVisibleAttribute(true) */
public class SinkProviderData
ComVisibleAttribute(true)
public class SinkProviderData
Hinweise
Die Senkenanbieterdaten bilden eine Baumstruktur von Konfigurationsinformationen, die in den <provider>-Element (Vorlage)-Konfigurationsknoten gespeichert sind. Alle Senkenanbieter, die von einer Konfigurationsdatei verwendet werden sollen, müssen über einen Konstruktor verfügen, der ein IDictionary von Eigenschaften und eine ICollection dieser Strukturen akzeptiert.
Beispiel
Public Class MySinkProviderData
Implements IServerChannelSinkProvider
Private myIServerChannelSinkProviderNew As IServerChannelSinkProvider
Private myAcceptMode As Boolean = True
Private myCollectionData As ICollection = Nothing
Public Sub New()
End Sub 'New
Public Sub New(properties As IDictionary, providerData As ICollection)
Dim myMode As String = CType(properties("mode"), String)
If String.Compare(myMode, "accept", True) = 0 Then
myAcceptMode = True
Else
If String.Compare(myMode, "reject", True) = 0 Then
myAcceptMode = False
End If
End If
myCollectionData = providerData
End Sub 'New
<SecurityPermission(SecurityAction.Demand, Flags := SecurityPermissionFlag.Infrastructure)> _
Public Sub GetChannelData(myLocalChannelData As IChannelDataStore) Implements _
IServerChannelSinkProvider.GetChannelData
End Sub 'GetChannelData
<SecurityPermission(SecurityAction.Demand, Flags := SecurityPermissionFlag.Infrastructure)> _
Public Function CreateSink(myChannel As IChannelReceiver) As IServerChannelSink Implements _
IServerChannelSinkProvider.CreateSink
Dim myIServerChannelSink_nextSink As IServerChannelSink = Nothing
If Not (myIServerChannelSinkProviderNew Is Nothing) Then
myIServerChannelSink_nextSink = myIServerChannelSinkProviderNew.CreateSink(myChannel)
End If
Dim mySink As New MyIPFilterChannelSink(myAcceptMode, myIServerChannelSink_nextSink)
' Create and initialize a new ArrayList.
Dim myArrayList As New ArrayList()
' Add filters.
Dim mySinkData As SinkProviderData
For Each mySinkData In myCollectionData
' The SinkProviderData properties are added to the ArrayList.
myArrayList.Add(mySinkData.Children)
myArrayList.Add(mySinkData.Name)
Dim myMaskString As String = CType(mySinkData.Properties("mask"), String)
Dim myIPString As String = CType(mySinkData.Properties("ip"), String)
Dim myMachineString As String = CType(mySinkData.Properties("machine"), String)
Dim mask As IPAddress = Nothing
Dim ip As IPAddress = Nothing
If Not (myIPString Is Nothing) Then
mask = IPAddress.Parse(myMaskString)
ip = IPAddress.Parse(myIPString)
Else
mask = IPAddress.Parse("255.255.255.255")
ip = Dns.Resolve(myMachineString).AddressList(0)
End If
mySink.AddFilter(mask, ip)
Next mySinkData
Console.WriteLine("The Count of the ArrayList is :" + myArrayList.Count.ToString())
Console.WriteLine("The values in the SinkProviderData collection are:")
' Call the PrintValues function to enumerate and print values to the console.
PrintValues(myArrayList)
Return mySink
End Function 'CreateSink
Public Property [Next]() As IServerChannelSinkProvider Implements _
IServerChannelSinkProvider.Next
<SecurityPermission(SecurityAction.Demand, Flags := SecurityPermissionFlag.Infrastructure)> _
Get
Return myIServerChannelSinkProviderNew
End Get
<SecurityPermission(SecurityAction.Demand, Flags := SecurityPermissionFlag.Infrastructure)> _
Set
myIServerChannelSinkProviderNew = value
End Set
End Property
Public Property Mode() As FilterMode
Get
Return(IIf(myAcceptMode ,FilterMode.Accept ,FilterMode.Reject))
End Get
Set(ByVal Value As FilterMode)
If Value = FilterMode.Accept Then
myAcceptMode = Value
End If
End Set
End Property
Public Shared Sub PrintValues(myList As IEnumerable)
Dim myEnumerator As IEnumerator = myList.GetEnumerator()
While myEnumerator.MoveNext()
Console.Write(ControlChars.Tab + "{0}", myEnumerator.Current)
End While
Console.WriteLine()
End Sub 'PrintValues
End Class 'MySinkProviderData
' class MySinkProviderData
public class MySinkProviderData : IServerChannelSinkProvider
{
private IServerChannelSinkProvider myIServerChannelSinkProviderNew;
private bool myAcceptMode = true;
private ICollection myCollectionData = null;
public MySinkProviderData()
{
}
public MySinkProviderData(IDictionary properties, ICollection providerData)
{
String myMode = (String)properties["mode"];
if (String.Compare(myMode, "accept", true) == 0)
myAcceptMode = true;
else
if (String.Compare(myMode, "reject", true) == 0)
myAcceptMode = false;
myCollectionData = providerData;
}
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)]
public void GetChannelData(IChannelDataStore myLocalChannelData)
{
}
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)]
public IServerChannelSink CreateSink(IChannelReceiver myChannel)
{
IServerChannelSink myIServerChannelSink_nextSink = null;
if (myIServerChannelSinkProviderNew != null)
myIServerChannelSink_nextSink = myIServerChannelSinkProviderNew.CreateSink(myChannel);
MyIPFilterChannelSink mySink = new MyIPFilterChannelSink(myAcceptMode,
myIServerChannelSink_nextSink);
// Create and initialize a new ArrayList.
ArrayList myArrayList = new ArrayList();
// Add filters.
foreach (SinkProviderData mySinkData in myCollectionData)
{
// The SinkProviderData properties are added to the ArrayList.
myArrayList.Add(mySinkData.Children);
myArrayList.Add(mySinkData.Name);
String myMaskString = (String)mySinkData.Properties["mask"];
String myIPString = (String)mySinkData.Properties["ip"];
String myMachineString = (String)mySinkData.Properties["machine"];
IPAddress mask = null;
IPAddress ip = null;
if (myIPString != null)
{
mask = IPAddress.Parse(myMaskString);
ip = IPAddress.Parse(myIPString);
}
else
{
mask = IPAddress.Parse("255.255.255.255");
ip = Dns.Resolve(myMachineString).AddressList[0];
}
mySink.AddFilter(mask, ip);
}
Console.WriteLine("The Count of the ArrayList is :"+ myArrayList.Count);
Console.WriteLine("The values in the SinkProviderData collection are:");
// Call the PrintValues function to enumerate and print values to the console.
PrintValues( myArrayList );
return mySink;
}
public IServerChannelSinkProvider Next
{
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)]
get
{
return myIServerChannelSinkProviderNew;
}
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)]
set
{
myIServerChannelSinkProviderNew = value;
}
}
public FilterMode Mode
{
get
{
return (myAcceptMode ? FilterMode.Accept : FilterMode.Reject);
}
set
{
myAcceptMode = (value == FilterMode.Accept);
}
}
public static void PrintValues( IEnumerable myList )
{
IEnumerator myEnumerator = myList.GetEnumerator();
while ( myEnumerator.MoveNext() )
Console.Write( "\t{0}", myEnumerator.Current );
Console.WriteLine();
}
} // class MySinkProviderData
Vererbungshierarchie
System.Object
System.Runtime.Remoting.Channels.SinkProviderData
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
SinkProviderData-Member
System.Runtime.Remoting.Channels-Namespace