BaseChannelObjectWithProperties Klas

Definitie

Biedt een basis-implementatie van een kanaalobject dat een woordenlijstinterface beschikbaar maakt voor de eigenschappen ervan.

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
Overname
BaseChannelObjectWithProperties
Afgeleid
Kenmerken
Implementeringen

Voorbeelden

   [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

Opmerkingen

BaseChannelObjectWithProperties is de basisklasse voor BaseChannelWithProperties en BaseChannelSinkWithProperties.

BaseChannelWithProperties en BaseChannelSinkWithProperties kan worden gebruikt als de basisklassen voor kanalen en kanaalsinks die benoemde eigenschappen bieden.

BaseChannelObjectWithProperties verwerkt de complexe taak van het vragen van een kanaalobject voor de eigenschappen ervan.

Deze klasse maakt een koppelingsvraag en een overnamevraag op klasseniveau. Er SecurityException wordt een gegenereerd wanneer de directe aanroeper of de afgeleide klasse geen infrastructuurmachtiging heeft. Zie Koppelingsvereisten en overnamevereisten voor meer informatie over beveiligingsvereisten.

Notities voor uitvoerders

Wanneer u de eigenschap overdrat BaseChannelObjectWithProperties, moet u de Keys eigenschap en de Item[Object] eigenschap overschrijven.

Constructors

Name Description
BaseChannelObjectWithProperties()

Initialiseert een nieuw exemplaar van de BaseChannelObjectWithProperties klasse.

Eigenschappen

Name Description
Count

Hiermee wordt het aantal eigenschappen opgehaald dat is gekoppeld aan het kanaalobject.

IsFixedSize

Hiermee wordt een waarde opgehaald die aangeeft of het aantal eigenschappen dat in het kanaalobject kan worden ingevoerd, is opgelost.

IsReadOnly

Hiermee wordt een waarde opgehaald die aangeeft of de verzameling eigenschappen in het kanaalobject alleen-lezen is.

IsSynchronized

Hiermee wordt een waarde opgehaald die aangeeft of de woordenlijst van kanaalobjecteigenschappen wordt gesynchroniseerd.

Item[Object]

Wanneer deze wordt overschreven in een afgeleide klasse, haalt of stelt u de eigenschap in die is gekoppeld aan de opgegeven sleutel.

Keys

Wanneer deze wordt overschreven in een afgeleide klasse, haalt u een ICollection aantal sleutels op waaraan de eigenschappen van het kanaalobject zijn gekoppeld.

Properties

Hiermee haalt u een IDictionary van de kanaaleigenschappen op die zijn gekoppeld aan het kanaalobject.

SyncRoot

Hiermee haalt u een object op dat wordt gebruikt om de toegang tot de BaseChannelObjectWithProperties.

Values

Hiermee haalt u een ICollection van de waarden op van de eigenschappen die zijn gekoppeld aan het kanaalobject.

Methoden

Name Description
Add(Object, Object)

Gooit een NotSupportedException.

Clear()

Gooit een NotSupportedException.

Contains(Object)

Retourneert een waarde die aangeeft of het kanaalobject een eigenschap bevat die is gekoppeld aan de opgegeven sleutel.

CopyTo(Array, Int32)

Gooit een NotSupportedException.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetEnumerator()

Retourneert een IDictionaryEnumerator opsomming van alle eigenschappen die zijn gekoppeld aan het kanaalobject.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Remove(Object)

Gooit een NotSupportedException.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

Name Description
IEnumerable.GetEnumerator()

Retourneert een IEnumerator opsomming van alle eigenschappen die zijn gekoppeld aan het kanaalobject.

Extensiemethoden

Name Description
AsParallel(IEnumerable)

Hiermee schakelt u parallelle uitvoering van een query in.

AsQueryable(IEnumerable)

Converteert een IEnumerable naar een IQueryable.

Cast<TResult>(IEnumerable)

Cast de elementen van een IEnumerable naar het opgegeven type.

OfType<TResult>(IEnumerable)

Hiermee filtert u de elementen van een IEnumerable op basis van een opgegeven type.

Van toepassing op