BaseChannelObjectWithProperties Klasa

Definicja

Udostępnia podstawową implementację obiektu kanału, który uwidacznia interfejs słownika do jego właściwości.Provides a base implementation of a channel object that exposes a dictionary interface to its properties.

public ref class BaseChannelObjectWithProperties abstract : 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
Public MustInherit Class BaseChannelObjectWithProperties
Implements IDictionary
Dziedziczenie
BaseChannelObjectWithProperties
Pochodne
Atrybuty
Implementuje

Przykłady

   [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;
         }
      }
   };
}
   [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
   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;
         }
      }
   }
   [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
   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

Uwagi

BaseChannelObjectWithPropertiesjest klasą bazową BaseChannelWithProperties dla BaseChannelSinkWithPropertiesi.BaseChannelObjectWithProperties is the base class for BaseChannelWithProperties and BaseChannelSinkWithProperties.

BaseChannelWithPropertiesi BaseChannelSinkWithProperties mogą być używane jako klasy bazowe kanałów i ujścia kanałów, które udostępniają nazwane właściwości.BaseChannelWithProperties and BaseChannelSinkWithProperties can be used as the base classes for channels and channel sinks that provide named properties.

BaseChannelObjectWithPropertiesobsługuje złożone zadanie zaproszenia obiektu kanału o właściwości.BaseChannelObjectWithProperties handles the complex task of asking a channel object for its properties.

Ta klasa wykonuje żądanie linku i żądanie dziedziczenia na poziomie klasy.This class makes a link demand and an inheritance demand at the class level. Występuje SecurityException , gdy bezpośredni obiekt wywołujący lub Klasa pochodna nie ma uprawnienia do infrastruktury.A SecurityException is thrown when either the immediate caller or the derived class does not have infrastructure permission. Aby uzyskać szczegółowe informacje o wymaganiach dotyczących zabezpieczeń, zobacz Wymagania dotyczące powiązań i wymagania dotyczące dziedziczenia.For details about security demands, see Link Demands and Inheritance Demands.

Uwagi dotyczące dziedziczenia

W przypadku dziedziczenia BaseChannelObjectWithPropertiesz, należy Keys zastąpić właściwość i Item[Object] właściwość.When you inherit from BaseChannelObjectWithProperties, you must override the Keys property and the Item[Object] property.

Konstruktory

BaseChannelObjectWithProperties()

Inicjuje nowe wystąpienie klasy BaseChannelObjectWithProperties klasy.Initializes a new instance of the BaseChannelObjectWithProperties class.

Właściwości

Count

Pobiera liczbę właściwości skojarzonych z obiektem kanału.Gets the number of properties associated with the channel object.

IsFixedSize

Pobiera wartość wskazującą, czy liczba właściwości, które można wprowadzić do obiektu kanału jest stała.Gets a value that indicates whether the number of properties that can be entered into the channel object is fixed.

IsReadOnly

Pobiera wartość wskazującą, czy kolekcja właściwości w obiekcie kanału jest tylko do odczytu.Gets a value that indicates whether the collection of properties in the channel object is read-only.

IsSynchronized

Pobiera wartość wskazującą, czy słownik właściwości obiektu kanału jest synchronizowany.Gets a value that indicates whether the dictionary of channel object properties is synchronized.

Item[Object]

Gdy jest zastępowany w klasie pochodnej, Pobiera lub ustawia właściwość, która jest skojarzona z określonym kluczem.When overridden in a derived class, gets or sets the property that is associated with the specified key.

Keys

Gdy jest zastępowany w klasie pochodnej, pobiera ICollection klucze, z którymi są skojarzone właściwości obiektu kanału.When overridden in a derived class, gets a ICollection of keys that the channel object properties are associated with.

Properties

IDictionary Pobiera właściwości kanału skojarzone z obiektem kanału.Gets a IDictionary of the channel properties associated with the channel object.

SyncRoot

Pobiera obiekt, który jest używany do synchronizowania dostępu do BaseChannelObjectWithProperties.Gets an object that is used to synchronize access to the BaseChannelObjectWithProperties.

Values

ICollection Pobiera wartości właściwości skojarzonych z obiektem kanału.Gets a ICollection of the values of the properties associated with the channel object.

Metody

Add(Object, Object)

NotSupportedExceptionZgłasza.Throws a NotSupportedException.

Clear()

NotSupportedExceptionZgłasza.Throws a NotSupportedException.

Contains(Object)

Zwraca wartość wskazującą, czy obiekt kanału zawiera właściwość, która jest skojarzona z określonym kluczem.Returns a value that indicates whether the channel object contains a property that is associated with the specified key.

CopyTo(Array, Int32)

NotSupportedExceptionZgłasza.Throws a NotSupportedException.

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetEnumerator()

IDictionaryEnumerator Zwraca, który wylicza wszystkie właściwości skojarzone z obiektem kanału.Returns a IDictionaryEnumerator that enumerates over all the properties associated with the channel object.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Objectelementu.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
Remove(Object)

NotSupportedExceptionZgłasza.Throws a NotSupportedException.

ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Jawne implementacje interfejsu

IEnumerable.GetEnumerator()

IEnumerator Zwraca, który wylicza wszystkie właściwości, które są skojarzone z obiektem kanału.Returns a IEnumerator that enumerates over all the properties that are associated with the channel object.

Metody rozszerzania

Cast<TResult>(IEnumerable)

Rzutuje elementy IEnumerable do określonego typu.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable w oparciu o określony typ.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Włącza przetwarzanie równoległe zapytania.Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerable KonwertujeIQueryabledo.Converts an IEnumerable to an IQueryable.

Zabezpieczenia

SecurityPermission
Do pracy z kodem infrastruktury.For operating with infrastructure code. Wartość żądania: InheritanceDemand; Wartość uprawnienia:InfrastructureDemand value: InheritanceDemand; Permission value: Infrastructure

Dotyczy