BaseChannelObjectWithProperties Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine Basisimplementierung eines Channelobjekts bereit, das den zugehörigen Eigenschaften eine Wörterbuchschnittstelle verfügbar macht.
public ref class BaseChannelObjectWithProperties abstract : System::Collections::IDictionary
public abstract class BaseChannelObjectWithProperties : System.Collections.IDictionary
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class BaseChannelObjectWithProperties : System.Collections.IDictionary
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public abstract class BaseChannelObjectWithProperties : System.Collections.IDictionary
type BaseChannelObjectWithProperties = class
interface IDictionary
interface ICollection
interface IEnumerable
[<System.Runtime.InteropServices.ComVisible(true)>]
type BaseChannelObjectWithProperties = class
interface IDictionary
interface ICollection
interface IEnumerable
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Security.SecurityCritical>]
type BaseChannelObjectWithProperties = class
interface IDictionary
interface ICollection
interface IEnumerable
Public MustInherit Class BaseChannelObjectWithProperties
Implements IDictionary
- Vererbung
-
BaseChannelObjectWithProperties
- Abgeleitet
- Attribute
- Implementiert
Beispiele
[PermissionSet(SecurityAction::Demand, Name="FullTrust")]
private ref class LoggingServerChannelSink: public BaseChannelObjectWithProperties, public IServerChannelSink
{
private:
IServerChannelSink^ nextSink2;
bool bEnabled2;
public:
LoggingServerChannelSink()
: nextSink2( nullptr ), bEnabled2( true )
{}
LoggingServerChannelSink( IServerChannelSink^ localNextSink )
: BaseChannelObjectWithProperties()
{
nextSink2 = localNextSink;
}
virtual ServerProcessing ProcessMessage( IServerChannelSinkStack^ sinkStack, IMessage^ requestMsg, ITransportHeaders^ requestHeaders, Stream^ requestStream, [Out]IMessage^% responseMsg, [Out]ITransportHeaders^% responseHeaders, [Out]Stream^% responseStream ) = IServerChannelSink::ProcessMessage
{
if ( bEnabled2 )
{
Console::WriteLine( "----------Request Headers-----------" );
Console::WriteLine( "{0}:{1}", CommonTransportKeys::IPAddress,
requestHeaders[ CommonTransportKeys::IPAddress ] );
Console::WriteLine( "{0}:{1}", CommonTransportKeys::ConnectionId,
requestHeaders[ CommonTransportKeys::ConnectionId ] );
Console::WriteLine( "{0}:{1}", CommonTransportKeys::RequestUri,
requestHeaders[ CommonTransportKeys::RequestUri ] );
}
sinkStack->Push( this, nullptr );
ServerProcessing processing = nextSink2->ProcessMessage( sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream );
switch ( processing )
{
case ServerProcessing::Complete:
sinkStack->Pop( this );
break;
case ServerProcessing::OneWay:
sinkStack->Pop( this );
break;
case ServerProcessing::Async:
sinkStack->Store( this, nullptr );
break;
}
return processing;
}
virtual void AsyncProcessResponse( IServerResponseChannelSinkStack^ sinkStack, Object^ /*state*/, IMessage^ msg, ITransportHeaders^ headers, Stream^ stream1 )
{
sinkStack->AsyncProcessResponse( msg, headers, stream1 );
}
virtual Stream^ GetResponseStream( IServerResponseChannelSinkStack^ /*sinkStack*/, Object^ /*state*/, IMessage^ /*msg*/, ITransportHeaders^ /*headers*/ )
{
return nullptr;
}
property IServerChannelSink^ NextChannelSink
{
virtual IServerChannelSink^ get()
{
return nextSink2;
}
}
};
[PermissionSet(SecurityAction::Demand, Name="FullTrust")]
public ref class LoggingServerChannelSinkProvider: public IServerChannelSinkProvider
{
private:
IServerChannelSinkProvider^ next2;
public:
LoggingServerChannelSinkProvider()
: next2( nullptr )
{}
LoggingServerChannelSinkProvider( IDictionary^ /*properties*/, ICollection^ /*providerData*/ ){}
virtual void GetChannelData( IChannelDataStore^ /*channelData*/ ){}
virtual IServerChannelSink^ CreateSink( IChannelReceiver^ channel1 )
{
IServerChannelSink^ localNextSink = nullptr;
if ( next2 != nullptr )
localNextSink = next2->CreateSink( channel1 );
return gcnew LoggingServerChannelSink( localNextSink );
}
property IServerChannelSinkProvider^ Next
{
virtual IServerChannelSinkProvider^ get()
{
return next2;
}
virtual void set( IServerChannelSinkProvider^ value )
{
next2 = value;
}
}
};
}
public class LoggingServerChannelSinkProvider : IServerChannelSinkProvider
{
private IServerChannelSinkProvider next2 = null;
public LoggingServerChannelSinkProvider(IDictionary properties, ICollection providerData)
{
}
public void GetChannelData(IChannelDataStore channelData)
{
}
public IServerChannelSink CreateSink(IChannelReceiver channel1)
{
IServerChannelSink localNextSink = null;
if (next2 != null)
localNextSink = next2.CreateSink(channel1);
return new LoggingServerChannelSink(localNextSink);
}
public IServerChannelSinkProvider Next
{
get
{
return next2;
}
set
{
next2 = value;
}
}
}
internal class LoggingServerChannelSink : BaseChannelObjectWithProperties, IServerChannelSink
{
private IServerChannelSink nextSink2 = null;
private bool bEnabled2 = true;
public LoggingServerChannelSink(IServerChannelSink localNextSink) : base()
{
nextSink2 = localNextSink;
}
public ServerProcessing ProcessMessage( IServerChannelSinkStack sinkStack,
IMessage requestMsg,
ITransportHeaders requestHeaders,
Stream requestStream,
out IMessage responseMsg,
out ITransportHeaders responseHeaders,
out Stream responseStream
)
{
if (bEnabled2)
{
Console.WriteLine("----------Request Headers-----------");
Console.WriteLine( CommonTransportKeys.IPAddress + ":" +
requestHeaders[CommonTransportKeys.IPAddress]);
Console.WriteLine( CommonTransportKeys.ConnectionId + ":" +
requestHeaders[CommonTransportKeys.ConnectionId]);
Console.WriteLine( CommonTransportKeys.RequestUri + ":" +
requestHeaders[CommonTransportKeys.RequestUri]);
}
sinkStack.Push(this, null);
ServerProcessing processing =
nextSink2.ProcessMessage(sinkStack, requestMsg, requestHeaders, requestStream, out responseMsg,
out responseHeaders, out responseStream);
switch (processing)
{
case ServerProcessing.Complete :
{
sinkStack.Pop(this);
break;
}
case ServerProcessing.OneWay:
{
sinkStack.Pop(this);
break;
}
case ServerProcessing.Async:
{
sinkStack.Store(this, null);
break;
}
}
return processing;
}
public void AsyncProcessResponse(IServerResponseChannelSinkStack sinkStack, Object state,
IMessage msg, ITransportHeaders headers, Stream stream1)
{
sinkStack.AsyncProcessResponse(msg, headers, stream1);
}
public Stream GetResponseStream(IServerResponseChannelSinkStack sinkStack, Object state,
IMessage msg, ITransportHeaders headers)
{
return null;
}
public IServerChannelSink NextChannelSink
{
get
{
return nextSink2;
}
}
}
<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
Public Class LoggingServerChannelSinkProvider
Implements IServerChannelSinkProvider
Private next2 As IServerChannelSinkProvider = Nothing
Public Sub New(properties As IDictionary, providerData As ICollection)
End Sub
Public Sub GetChannelData(channelData As IChannelDataStore) _
Implements IServerChannelSinkProvider.GetChannelData
End Sub
Public Function CreateSink(channel1 As IChannelReceiver) As IServerChannelSink _
Implements IServerChannelSinkProvider.CreateSink
Dim localNextSink As IServerChannelSink = Nothing
If Not (next2 Is Nothing) Then
localNextSink = next2.CreateSink(channel1)
End If
Return New LoggingServerChannelSink(localNextSink)
End Function 'CreateSink
Public Property [Next]() As IServerChannelSinkProvider Implements _
IServerChannelSinkProvider.Next
Get
Return next2
End Get
Set
next2 = value
End Set
End Property
End Class
<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
Friend Class LoggingServerChannelSink
Inherits BaseChannelObjectWithProperties
Implements IServerChannelSink
Private nextSink2 As IServerChannelSink = Nothing
Private bEnabled2 As Boolean = True
Public Sub New(localNextSink As IServerChannelSink)
MyBase.new()
nextSink2 = localNextSink
End Sub
Public Function ProcessMessage( ByVal sinkStack As IServerChannelSinkStack, _
ByVal requestMsg As IMessage, _
ByVal requestHeaders As ITransportHeaders, _
ByVal requestStream As Stream, _
<Out> ByRef responseMsg As IMessage, _
<Out> ByRef responseHeaders As ITransportHeaders, _
<Out> ByRef responseStream As Stream _
) As ServerProcessing _
Implements IServerChannelSink.ProcessMessage
If bEnabled2 Then
Console.WriteLine("----------Request Headers-----------")
Console.WriteLine(CommonTransportKeys.IPAddress.ToString() + ":" + _
requestHeaders(CommonTransportKeys.IPAddress).ToString())
Console.WriteLine(CommonTransportKeys.ConnectionId.ToString() + ":" + _
requestHeaders(CommonTransportKeys.ConnectionId).ToString())
Console.WriteLine(CommonTransportKeys.RequestUri.ToString() + ":" + _
requestHeaders(CommonTransportKeys.RequestUri).ToString())
End If
sinkStack.Push(Me, Nothing)
Dim processing As ServerProcessing = _
nextSink2.ProcessMessage _
(sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream)
Select Case processing
Case ServerProcessing.Complete
sinkStack.Pop(Me)
Case ServerProcessing.OneWay
sinkStack.Pop(Me)
Case ServerProcessing.Async
sinkStack.Store(Me, Nothing)
End Select
Return processing
End Function 'ProcessMessage
Public Sub AsyncProcessResponse(sinkStack As IServerResponseChannelSinkStack, _
state As Object, msg As IMessage, headers As ITransportHeaders, stream1 As Stream) _
Implements IServerChannelSink.AsyncProcessResponse
sinkStack.AsyncProcessResponse(msg, headers, stream1)
End Sub
Public Function GetResponseStream(sinkStack As IServerResponseChannelSinkStack, _
state As Object, msg As IMessage, headers As ITransportHeaders) As Stream _
Implements IServerChannelSink.GetResponseStream
Return Nothing
End Function 'GetResponseStream
Public ReadOnly Property NextChannelSink() As IServerChannelSink _
Implements IServerChannelSink.NextChannelSink
Get
Return nextSink2
End Get
End Property
Public Overrides ReadOnly Property Properties() As Collections.IDictionary _
Implements IServerChannelSink.Properties
Get
return nothing
End Get
End Property
End Class
Hinweise
BaseChannelObjectWithProperties ist die Basisklasse für BaseChannelWithProperties und BaseChannelSinkWithProperties.
BaseChannelWithProperties und BaseChannelSinkWithProperties können als Basisklassen für Kanäle und Kanalsenken verwendet werden, die benannte Eigenschaften bereitstellen.
BaseChannelObjectWithProperties behandelt die komplexe Aufgabe, ein Kanalobjekt nach seinen Eigenschaften zu fragen.
Diese Klasse stellt eine Linkanforderung und eine Vererbungsanforderung auf Klassenebene her. Ein SecurityException wird ausgelöst, wenn entweder der unmittelbare Aufrufer oder die abgeleitete Klasse über keine Infrastrukturberechtigung verfügt. Ausführliche Informationen zu Sicherheitsanforderungen finden Sie unter Linkanforderungen und Vererbungsanforderungen.
Hinweise für Ausführende
Wenn Sie von erben BaseChannelObjectWithProperties, müssen Sie die Keys -Eigenschaft und die Item[Object] -Eigenschaft überschreiben.
Konstruktoren
BaseChannelObjectWithProperties() |
Initialisiert eine neue Instanz der BaseChannelObjectWithProperties-Klasse. |
Eigenschaften
Count |
Ruft die Anzahl der Eigenschaften ab, die dem Channelobjekt zugeordnet sind. |
IsFixedSize |
Ruft einen Wert ab, der angibt, ob die Anzahl der Eigenschaften, die in das Channelobjekt eingegeben werden können, festgelegt ist. |
IsReadOnly |
Ruft einen Wert ab, der angibt, ob die Auflistung von Eigenschaften im Channelobjekt schreibgeschützt ist. |
IsSynchronized |
Ruft einen Wert ab, der angibt, ob das Wörterbuch von Channelobjekteigenschaften synchronisiert ist. |
Item[Object] |
Ruft beim Überschreiben in einer abgeleiteten Klasse die Eigenschaft ab, die dem angegebenen Schlüssel zugeordnet ist, oder legt diese fest. |
Keys |
Ruft beim Überschreiben in einer abgeleiteten Klasse eine ICollection von Schlüsseln ab, denen die Channelobjekteigenschaften zugeordnet sind. |
Properties |
Ruft ein IDictionary von Channeleigenschaften ab, die dem Channelobjekt zugeordnet sind. |
SyncRoot |
Ruft ein Objekt ab, mit dem der Zugriff auf das BaseChannelObjectWithProperties synchronisiert wird. |
Values |
Ruft eine ICollection der Werte der Eigenschaften ab, die dem Channelobjekt zugeordnet sind. |
Methoden
Add(Object, Object) |
Löst eine NotSupportedException aus. |
Clear() |
Löst eine NotSupportedException aus. |
Contains(Object) |
Gibt einen Wert zurück, der angibt, ob das Channelobjekt eine dem angegebenen Schlüssel zugeordnete Eigenschaft enthält. |
CopyTo(Array, Int32) |
Löst eine NotSupportedException aus. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetEnumerator() |
Gibt einen IDictionaryEnumerator zurück, der alle dem Channelobjekt zugeordneten Eigenschaften auflistet. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
Remove(Object) |
Löst eine NotSupportedException aus. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
IEnumerable.GetEnumerator() |
Gibt einen IEnumerator zurück, der alle dem Channelobjekt zugeordneten Eigenschaften auflistet. |
Erweiterungsmethoden
Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um |
OfType<TResult>(IEnumerable) |
Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs |
AsParallel(IEnumerable) |
Ermöglicht die Parallelisierung einer Abfrage. |
AsQueryable(IEnumerable) |
Konvertiert einen IEnumerable in einen IQueryable. |