Udostępnij za pośrednictwem


BaseChannelSinkWithProperties Klasa

Definicja

Udostępnia podstawową implementację ujść kanałów, które chcą uwidocznić interfejs słownika we swoich właściwościach.

public ref class BaseChannelSinkWithProperties abstract : System::Runtime::Remoting::Channels::BaseChannelObjectWithProperties
public abstract class BaseChannelSinkWithProperties : System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class BaseChannelSinkWithProperties : System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public abstract class BaseChannelSinkWithProperties : System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties
type BaseChannelSinkWithProperties = class
    inherit BaseChannelObjectWithProperties
[<System.Runtime.InteropServices.ComVisible(true)>]
type BaseChannelSinkWithProperties = class
    inherit BaseChannelObjectWithProperties
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Security.SecurityCritical>]
type BaseChannelSinkWithProperties = class
    inherit BaseChannelObjectWithProperties
Public MustInherit Class BaseChannelSinkWithProperties
Inherits BaseChannelObjectWithProperties
Dziedziczenie
BaseChannelSinkWithProperties
Atrybuty

Przykłady

[SecurityPermission(SecurityAction::Demand, Flags = SecurityPermissionFlag::Infrastructure)]
private ref class MyClientFormatterChannelSink: public BaseChannelSinkWithProperties, public IClientChannelSink, public IMessageSink
{
private:
   IClientChannelSink^ nextClientSink;
   IMessageSink^ nextMessageSink;

public:
   MyClientFormatterChannelSink()
      : nextClientSink( nullptr ), nextMessageSink( nullptr )
   {}

   MyClientFormatterChannelSink( IClientChannelSink^ nextSink, IMessageSink^ nextMsgSink )
      : BaseChannelSinkWithProperties()
   {
      nextClientSink = nextSink;
      nextMessageSink = nextMsgSink;
   }

    virtual void ProcessMessage( IMessage^ message, ITransportHeaders^ requestHeaders, Stream^ requestStream, [Out]ITransportHeaders^% responseHeaders, [Out]Stream^% responseStream )
    {
      nextClientSink->ProcessMessage( message, requestHeaders, requestStream, responseHeaders, responseStream );
    }



   virtual void AsyncProcessRequest( IClientChannelSinkStack^ sinkStack, IMessage^ msg, ITransportHeaders^ headers, Stream^ myStream )
   {
      sinkStack->Push( this, nullptr );
      nextClientSink->AsyncProcessRequest( sinkStack, msg, headers, myStream );
   }

   virtual void AsyncProcessResponse( IClientResponseChannelSinkStack^ sinkStack, Object^ /*state*/, ITransportHeaders^ headers, Stream^ myStream )
   {
      sinkStack->AsyncProcessResponse( headers, myStream );
   }

   virtual Stream^ GetRequestStream( IMessage^ /*msg*/, ITransportHeaders^ /*headers*/ )
   {
      return nullptr;
   }


   property IClientChannelSink^ NextChannelSink 
   {
      virtual IClientChannelSink^ get()
      {
         return nextClientSink;
      }

   }

   property IMessageSink^ NextSink 
   {
      virtual IMessageSink^ get()
      {
         return nextMessageSink;
      }

   }

   virtual IMessageCtrl^ AsyncProcessMessage( IMessage^ /*msg*/, IMessageSink^ /*replySink*/ )
   {
      return nullptr;
   }

   virtual IMessage^ SyncProcessMessage( IMessage^ msg )
   {
      return nextMessageSink->SyncProcessMessage( msg );
   }


   property Object^ Item [Object^]
   {
      virtual Object^ get( Object^ key ) override
      {
          if ( key == MyKey::typeid )
                  return this;

         return nullptr;
      }

      virtual void set( Object^ /*value*/, Object^ /*key*/ ) override
      {
         throw gcnew NotSupportedException;
      }

   }

   property ICollection^ Keys 
   {
      virtual ICollection^ get() override
      {
         ArrayList^ myKeys = gcnew ArrayList( 1 );
         myKeys->Add( MyKey::typeid );
         return myKeys;
      }

   }

};
internal class MyClientFormatterChannelSink :
         BaseChannelSinkWithProperties, IClientChannelSink, IMessageSink
{
   private IClientChannelSink nextClientSink=null;
   private IMessageSink nextMessageSink = null;

   public MyClientFormatterChannelSink(IClientChannelSink nextSink,
                                       IMessageSink nextMsgSink) : base()
   {
      nextClientSink = nextSink;
      nextMessageSink = nextMsgSink;
   }

   public void ProcessMessage(IMessage msg,
         ITransportHeaders requestHeaders, Stream requestStream,
         out ITransportHeaders responseHeaders, out Stream responseStream)
   {
      nextClientSink.ProcessMessage(msg, requestHeaders, requestStream,
               out responseHeaders, out responseStream);
   }

   public void AsyncProcessRequest(IClientChannelSinkStack sinkStack,
                  IMessage msg, ITransportHeaders headers, Stream myStream)
   {
      sinkStack.Push(this, null);
      nextClientSink.AsyncProcessRequest(sinkStack,msg,headers,myStream);
   }

   public void AsyncProcessResponse(IClientResponseChannelSinkStack sinkStack,
         Object state, ITransportHeaders headers, Stream myStream)
   {
      sinkStack.AsyncProcessResponse(headers, myStream);
   }

   public Stream GetRequestStream(IMessage msg,ITransportHeaders headers)
   {
      return null;
   }

   public IClientChannelSink NextChannelSink
   {
      get
      {
         return nextClientSink;
      }
   }

   public IMessageSink NextSink
   {
      get
      {
         return nextMessageSink;
      }
   }

   public IMessageCtrl AsyncProcessMessage(IMessage msg,
                                                IMessageSink replySink)
   {
      return null;
   }

   public IMessage SyncProcessMessage(IMessage msg)
   {
      return nextMessageSink.SyncProcessMessage(msg);
   }

   public override Object this[Object key]
   {
      get
      {
         if (key == typeof(MyKey))
            return this;
         return null;
      }
      set
      {
         throw new NotSupportedException();
      }
   }
   public override ICollection Keys
   {
      get
      {
         ArrayList myKeys = new ArrayList(1);
         myKeys.Add(typeof(MyKey));
         return myKeys;
      }
   }
}
public class MyKey
{
}
<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
Friend Class MyClientFormatterChannelSink
   Inherits BaseChannelSinkWithProperties
   Implements IClientChannelSink, IMessageSink
   Private nextClientSink As IClientChannelSink = Nothing
   Private nextMessageSink As IMessageSink = Nothing

   Public Sub New(nextSink As IClientChannelSink, nextMsgSink As IMessageSink)
      MyBase.New()
      nextClientSink = nextSink
      nextMessageSink = nextMsgSink
   End Sub

   Public Sub ProcessMessage(msg As IMessage, requestHeaders As ITransportHeaders, _
               requestStream As Stream, ByRef responseHeaders As ITransportHeaders, _
               ByRef responseStream As Stream) _
               Implements IClientChannelSink.ProcessMessage
      nextClientSink.ProcessMessage(msg, requestHeaders, requestStream, _
                                    responseHeaders, responseStream)
   End Sub

   Public Sub AsyncProcessRequest(sinkStack As IClientChannelSinkStack, _
            msg As IMessage, headers As ITransportHeaders, myStream As Stream) _
            Implements IClientChannelSink.AsyncProcessRequest
      sinkStack.Push(Me, Nothing)
      nextClientSink.AsyncProcessRequest(sinkStack, msg, headers, myStream)
   End Sub

   Public Sub AsyncProcessResponse(sinkStack As IClientResponseChannelSinkStack, _
            state As Object, headers As ITransportHeaders, myStream As Stream) _
            Implements IClientChannelSink.AsyncProcessResponse
      sinkStack.AsyncProcessResponse(headers, myStream)
   End Sub

   Public Function GetRequestStream(msg As IMessage, headers As ITransportHeaders) As Stream _
         Implements IClientChannelSink.GetRequestStream
      Return Nothing
   End Function 'GetRequestStream

   Public ReadOnly Property NextChannelSink() As IClientChannelSink _
         Implements IClientChannelSink.NextChannelSink
      Get
         Return nextClientSink
      End Get
   End Property

   Public ReadOnly Property NextSink() As IMessageSink _
         Implements IMessageSink.NextSink
      Get
         Return nextMessageSink
      End Get
   End Property

   Public Overrides ReadOnly Property Properties() As Collections.IDictionary _
            Implements IClientChannelSink.Properties
      Get
      End Get
   End Property

   Public Function AsyncProcessMessage(msg As IMessage, replySink As IMessageSink) As IMessageCtrl _
            Implements IMessageSink.AsyncProcessMessage
      Return Nothing
   End Function 'AsyncProcessMessage

   Public Function SyncProcessMessage(msg As IMessage) As IMessage _
            Implements IMessageSink.SyncProcessMessage
      Return nextMessageSink.SyncProcessMessage(msg)
   End Function 'SyncProcessMessage

   Default Public Overrides Property Item(key As Object) As Object
      Get
         If key Is GetType(MyKey) Then
            Return Me
         End If
         Return Nothing
      End Get
      Set
         Throw New NotSupportedException()
      End Set
   End Property

   Public Overrides ReadOnly Property Keys() As ICollection
      Get
         Dim myKeys As New ArrayList(0)
         myKeys.Add(GetType(MyKey))
         Return myKeys
      End Get
   End Property
End Class

Public Class MyKey
End Class

Uwagi

Ujścia kanału zapewniają punkt wtyczki, który umożliwia dostęp do podstawowych komunikatów, które przepływają przez kanał, a także strumień używany przez mechanizm transportu do wysyłania komunikatów do obiektu zdalnego. Ujścia kanału są połączone ze sobą w łańcuchu dostawców ujścia kanału, a wszystkie komunikaty kanału przepływają przez ten łańcuch ujściów przed serializacji i transportu komunikatu.

Ta klasa sprawia, że żądanie połączenia i zapotrzebowanie na dziedziczenie na poziomie klasy. Element jest SecurityException zgłaszany, gdy obiekt wywołujący natychmiast lub klasa pochodna nie ma uprawnień infrastruktury. Aby uzyskać szczegółowe informacje na temat wymagań dotyczących zabezpieczeń, zobacz Łączenie żądań i żądań dziedziczenia.

Uwagi dotyczące implementowania

Gdy dziedziczysz z BaseChannelSinkWithPropertiesklasy , należy zaimplementować Keys właściwość i Item[Object] właściwość .

Konstruktory

BaseChannelSinkWithProperties()

Inicjuje nowe wystąpienie klasy BaseChannelSinkWithProperties.

Właściwości

Count

Pobiera liczbę właściwości skojarzonych z obiektem kanału.

(Odziedziczone po BaseChannelObjectWithProperties)
IsFixedSize

Pobiera wartość wskazującą, czy liczba właściwości, które można wprowadzić do obiektu kanału, jest stała.

(Odziedziczone po BaseChannelObjectWithProperties)
IsReadOnly

Pobiera wartość wskazującą, czy kolekcja właściwości w obiekcie kanału jest tylko do odczytu.

(Odziedziczone po BaseChannelObjectWithProperties)
IsSynchronized

Pobiera wartość wskazującą, czy słownik właściwości obiektu kanału jest synchronizowany.

(Odziedziczone po BaseChannelObjectWithProperties)
Item[Object]

Po zastąpieniu w klasie pochodnej pobiera lub ustawia właściwość skojarzona z określonym kluczem.

(Odziedziczone po BaseChannelObjectWithProperties)
Keys

Po zastąpieniu w klasie pochodnej pobiera ICollection klucze, z którymi są skojarzone właściwości obiektu kanału.

(Odziedziczone po BaseChannelObjectWithProperties)
Properties

IDictionary Pobiera właściwości kanału skojarzone z obiektem kanału.

(Odziedziczone po BaseChannelObjectWithProperties)
SyncRoot

Pobiera obiekt używany do synchronizowania dostępu do obiektu BaseChannelObjectWithProperties.

(Odziedziczone po BaseChannelObjectWithProperties)
Values

Pobiera wartości ICollection właściwości skojarzonych z obiektem kanału.

(Odziedziczone po BaseChannelObjectWithProperties)

Metody

Add(Object, Object)

Zgłasza element NotSupportedException.

(Odziedziczone po BaseChannelObjectWithProperties)
Clear()

Zgłasza element NotSupportedException.

(Odziedziczone po BaseChannelObjectWithProperties)
Contains(Object)

Zwraca wartość wskazującą, czy obiekt kanału zawiera właściwość skojarzona z określonym kluczem.

(Odziedziczone po BaseChannelObjectWithProperties)
CopyTo(Array, Int32)

Zgłasza element NotSupportedException.

(Odziedziczone po BaseChannelObjectWithProperties)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetEnumerator()

Zwraca wartość IDictionaryEnumerator , która wylicza wszystkie właściwości skojarzone z obiektem kanału.

(Odziedziczone po BaseChannelObjectWithProperties)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
Remove(Object)

Zgłasza element NotSupportedException.

(Odziedziczone po BaseChannelObjectWithProperties)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

IEnumerable.GetEnumerator()

Zwraca wartość IEnumerator , która wylicza wszystkie właściwości skojarzone z obiektem kanału.

(Odziedziczone po BaseChannelObjectWithProperties)

Metody rozszerzania

Cast<TResult>(IEnumerable)

Rzutuje elementy elementu IEnumerable do określonego typu.

OfType<TResult>(IEnumerable)

Filtruje elementy elementu IEnumerable na podstawie określonego typu.

AsParallel(IEnumerable)

Umożliwia równoległość zapytania.

AsQueryable(IEnumerable)

Konwertuje element IEnumerable na .IQueryable

Dotyczy