BaseChannelSinkWithProperties Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет базовую реализацию для приемников каналов, которые хотят предоставить интерфейс словаря своим свойствам.
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
- Наследование
- Атрибуты
Примеры
[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
Комментарии
Приемники каналов предоставляют точку подключаемого модуля, которая позволяет получать доступ к базовым сообщениям, которые передаются через канал, а также поток, используемый механизмом транспорта для отправки сообщений в удаленный объект. Приемники каналов связаны между собой в цепочке поставщиков приемников каналов, и все сообщения канала передаются через эту цепочку приемников до сериализации и передачи сообщения.
Этот класс делает спрос на связь и спрос на наследование на уровне класса. Возникает SecurityException , если непосредственный вызывающий или производный класс не имеют разрешения инфраструктуры. Дополнительные сведения о требованиях к безопасности см. в разделе "Требования ссылки".
Примечания для тех, кто реализует этот метод
При наследовании BaseChannelSinkWithPropertiesItem[Object] необходимо реализовать Keys свойство и свойство.
Конструкторы
| Имя | Описание |
|---|---|
| BaseChannelSinkWithProperties() |
Инициализирует новый экземпляр класса BaseChannelSinkWithProperties. |
Свойства
| Имя | Описание |
|---|---|
| Count |
Возвращает количество свойств, связанных с объектом канала. (Унаследовано от BaseChannelObjectWithProperties) |
| IsFixedSize |
Возвращает значение, указывающее, является ли число свойств, которые можно ввести в объект канала. (Унаследовано от BaseChannelObjectWithProperties) |
| IsReadOnly |
Возвращает значение, указывающее, доступна ли коллекция свойств в объекте канала только для чтения. (Унаследовано от BaseChannelObjectWithProperties) |
| IsSynchronized |
Возвращает значение, указывающее, синхронизирован ли словарь свойств объекта канала. (Унаследовано от BaseChannelObjectWithProperties) |
| Item[Object] |
При переопределении в производном классе получает или задает свойство, связанное с указанным ключом. (Унаследовано от BaseChannelObjectWithProperties) |
| Keys |
При переопределении в производном классе получает ICollection ключи, с которыми связаны свойства объекта канала. (Унаследовано от BaseChannelObjectWithProperties) |
| Properties |
IDictionary Возвращает свойства канала, связанные с объектом канала. (Унаследовано от BaseChannelObjectWithProperties) |
| SyncRoot |
Получает объект, используемый для синхронизации доступа к объекту BaseChannelObjectWithProperties. (Унаследовано от BaseChannelObjectWithProperties) |
| Values |
ICollection Возвращает значения свойств, связанных с объектом канала. (Унаследовано от BaseChannelObjectWithProperties) |
Методы
| Имя | Описание |
|---|---|
| Add(Object, Object) |
Формирует исключение NotSupportedException. (Унаследовано от BaseChannelObjectWithProperties) |
| Clear() |
Формирует исключение NotSupportedException. (Унаследовано от BaseChannelObjectWithProperties) |
| Contains(Object) |
Возвращает значение, указывающее, содержит ли объект канала свойство, связанное с указанным ключом. (Унаследовано от BaseChannelObjectWithProperties) |
| CopyTo(Array, Int32) |
Формирует исключение NotSupportedException. (Унаследовано от BaseChannelObjectWithProperties) |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetEnumerator() |
Возвращает перечисление IDictionaryEnumerator всех свойств, связанных с объектом канала. (Унаследовано от BaseChannelObjectWithProperties) |
| GetHashCode() |
Служит в качестве хэш-функции по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| Remove(Object) |
Формирует исключение NotSupportedException. (Унаследовано от BaseChannelObjectWithProperties) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| IEnumerable.GetEnumerator() |
Возвращает перечисление IEnumerator всех свойств, связанных с объектом канала. (Унаследовано от BaseChannelObjectWithProperties) |
Методы расширения
| Имя | Описание |
|---|---|
| AsParallel(IEnumerable) |
Включает параллелизацию запроса. |
| AsQueryable(IEnumerable) |
Преобразует IEnumerable в IQueryable. |
| Cast<TResult>(IEnumerable) |
Приведение элементов IEnumerable к указанному типу. |
| OfType<TResult>(IEnumerable) |
Фильтрует элементы IEnumerable на основе указанного типа. |