BaseChannelObjectWithProperties BaseChannelObjectWithProperties BaseChannelObjectWithProperties BaseChannelObjectWithProperties Class

Определение

Обеспечивает основную реализацию объекта канала, которая представляет интерфейс словаря его свойствам.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
Наследование
BaseChannelObjectWithPropertiesBaseChannelObjectWithPropertiesBaseChannelObjectWithPropertiesBaseChannelObjectWithProperties
Производный
Атрибуты
Реализации

Примеры

   [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 'New
    
    Public Sub GetChannelData(channelData As IChannelDataStore) _ 
                                Implements IServerChannelSinkProvider.GetChannelData
    End Sub 'GetChannelData
    
    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 'LoggingServerChannelSinkProvider
 
 <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 'New
    
   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 'AsyncProcessResponse
    
    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 'LoggingServerChannelSink

Комментарии

BaseChannelObjectWithProperties является базовым классом для BaseChannelWithProperties и BaseChannelSinkWithProperties.BaseChannelObjectWithProperties is the base class for BaseChannelWithProperties and BaseChannelSinkWithProperties.

BaseChannelWithProperties и BaseChannelSinkWithProperties можно использовать как базовые классы для каналы и приемники каналов, которые предоставляют с именем свойства.BaseChannelWithProperties and BaseChannelSinkWithProperties can be used as the base classes for channels and channel sinks that provide named properties.

BaseChannelObjectWithProperties обрабатывает сложной задачи запроса объекта канала для его свойства.BaseChannelObjectWithProperties handles the complex task of asking a channel object for its properties.

Этот класс выполняет запрос ссылки и требования наследования на уровне класса.This class makes a link demand and an inheritance demand at the class level. Объект SecurityException возникает, если непосредственный вызывающий оператор или производного класса не имеет разрешения инфраструктуры.A SecurityException is thrown when either the immediate caller or the derived class does not have infrastructure permission. Дополнительные сведения о требованиях безопасности см. в разделе требования связывания и требования наследования.For details about security demands, see Link Demands and Inheritance Demands.

Примечания для тех, кто наследует этот метод

При наследовании от BaseChannelObjectWithProperties, необходимо переопределить Keys свойство и Item[Object] свойство.When you inherit from BaseChannelObjectWithProperties, you must override the Keys property and the Item[Object] property.

Конструкторы

BaseChannelObjectWithProperties() BaseChannelObjectWithProperties() BaseChannelObjectWithProperties() BaseChannelObjectWithProperties()

Инициализирует новый экземпляр класса BaseChannelObjectWithProperties.Initializes a new instance of the BaseChannelObjectWithProperties class.

Свойства

Count Count Count Count

Возвращает число свойств, связанных с объектом канала.Gets the number of properties associated with the channel object.

IsFixedSize IsFixedSize IsFixedSize IsFixedSize

Возвращает значение, указывающее, фиксировано ли число свойств, которые могут быть введены в объект канала.Gets a value that indicates whether the number of properties that can be entered into the channel object is fixed.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Логическое значение, указывающее, является ли коллекция свойств в объекте текущего канала предназначенной только для чтения.Gets a value that indicates whether the collection of properties in the channel object is read-only.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

Получает значение, указывающее, синхронизован ли словарь свойств объекта канала.Gets a value that indicates whether the dictionary of channel object properties is synchronized.

Item[Object] Item[Object] Item[Object] Item[Object]

При переопределении в производном классе возвращает или задает свойство, связанное с указанным ключом.When overridden in a derived class, gets or sets the property that is associated with the specified key.

Keys Keys Keys Keys

При перезаписи в выведенном классе возвращает коллекцию ключей ICollection, с которыми связаны свойства объектов канала.When overridden in a derived class, gets a ICollection of keys that the channel object properties are associated with.

Properties Properties Properties Properties

Возвращает IDictionary канала, с которыми связаны свойства объекта канала.Gets a IDictionary of the channel properties associated with the channel object.

SyncRoot SyncRoot SyncRoot SyncRoot

Получает объект, который может быть использован для синхронизации доступа к BaseChannelObjectWithProperties.Gets an object that is used to synchronize access to the BaseChannelObjectWithProperties.

Values Values Values Values

Возвращает ICollection значений свойств, с которыми связан объект канала.Gets a ICollection of the values of the properties associated with the channel object.

Методы

Add(Object, Object) Add(Object, Object) Add(Object, Object) Add(Object, Object)

Создает исключение NotSupportedException.Throws a NotSupportedException.

Clear() Clear() Clear() Clear()

Создает исключение NotSupportedException.Throws a NotSupportedException.

Contains(Object) Contains(Object) Contains(Object) Contains(Object)

Возвращает значение, указывающее, содержит ли объект текущего канала свойство, связанное с указанным ключом.Returns a value that indicates whether the channel object contains a property that is associated with the specified key.

CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32)

Создает исключение NotSupportedException.Throws a NotSupportedException.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Возвращает IDictionaryEnumerator, который перечисляет все свойства, связанные с объектом канала.Returns a IDictionaryEnumerator that enumerates over all the properties associated with the channel object.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
Remove(Object) Remove(Object) Remove(Object) Remove(Object)

Создает исключение NotSupportedException.Throws a NotSupportedException.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Явные реализации интерфейса

IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

Возвращает IEnumerator, который перечисляет все свойства, связанные с объектом канала.Returns a IEnumerator that enumerates over all the properties that are associated with the channel object.

Методы расширения

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

Преобразует IEnumerable для IQueryable.Converts an IEnumerable to an IQueryable.

Безопасность

SecurityPermission
для работы с кодом инфраструктуры.For operating with infrastructure code. Значение запроса: InheritanceDemand; Значение разрешения: InfrastructureDemand value: InheritanceDemand; Permission value: Infrastructure

Применяется к