BaseChannelObjectWithProperties 类

定义

提供信道对象的基实现,该对象要向其属性公开字典接口。

C#
public abstract class BaseChannelObjectWithProperties : System.Collections.IDictionary
C#
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class BaseChannelObjectWithProperties : System.Collections.IDictionary
C#
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public abstract class BaseChannelObjectWithProperties : System.Collections.IDictionary
继承
BaseChannelObjectWithProperties
派生
属性
实现

示例

C#
   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;
         }
      }
   }

注解

BaseChannelObjectWithPropertiesBaseChannelWithPropertiesBaseChannelSinkWithProperties 的基类。

BaseChannelWithPropertiesBaseChannelSinkWithProperties 可用作提供命名属性的通道和通道接收器的基类。

BaseChannelObjectWithProperties 处理询问通道对象属性的复杂任务。

此类在类级别发出链接需求和继承需求。 SecurityException当直接调用方或派生类没有基础结构权限时,将引发 。 有关安全要求的详细信息,请参阅 链接需求继承要求

实施者说明

BaseChannelObjectWithProperties继承时,必须重写 Keys 属性和 Item[Object] 属性。

构造函数

属性

Count

获取与该信道对象关联的属性的数目。

IsFixedSize

获取一个值,该值指示可以输入到信道对象中的属性的数目是否是固定的。

IsReadOnly

获取一个值,该值指示信道对象中的属性集合是否是只读的。

IsSynchronized

获取一个值,该值指示信道对象属性的字典是否同步。

Item[Object]

在派生类中重写时,获取或设置与指定键关联的属性。

Keys

当在派生类中重写时,获取与信道对象属性关联的键的 ICollection

Properties

获取与信道对象关联的信道属性的 IDictionary

SyncRoot

获取一个对象,该对象用于同步对 BaseChannelObjectWithProperties 的访问。

Values

获取与信道对象关联的属性值的 ICollection

方法

Add(Object, Object)

引发 NotSupportedException

Clear()

引发 NotSupportedException

Contains(Object)

返回一个值,该值指示信道对象是否包含与指定键关联的属性。

CopyTo(Array, Int32)

引发 NotSupportedException

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetEnumerator()

返回 IDictionaryEnumerator,它枚举与该信道对象关联的所有属性。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
Remove(Object)

引发 NotSupportedException

ToString()

返回表示当前对象的字符串。

(继承自 Object)

显式接口实现

IEnumerable.GetEnumerator()

返回 IEnumerator,它枚举与信道对象关联的所有属性。

扩展方法

Cast<TResult>(IEnumerable)

IEnumerable 的元素强制转换为指定的类型。

OfType<TResult>(IEnumerable)

根据指定类型筛选 IEnumerable 的元素。

AsParallel(IEnumerable)

启用查询的并行化。

AsQueryable(IEnumerable)

IEnumerable 转换为 IQueryable

适用于

产品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1