BaseChannelObjectWithProperties Classe
Definição
Oferece uma implementação base de um objeto de canal que expõe uma interface de dicionário a suas propriedades.Provides a base implementation of a channel object that exposes a dictionary interface to its properties.
public ref class BaseChannelObjectWithProperties abstract : System::Collections::IDictionary
public abstract class BaseChannelObjectWithProperties : System.Collections.IDictionary
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class BaseChannelObjectWithProperties : 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
[<System.Runtime.InteropServices.ComVisible(true)>]
type BaseChannelObjectWithProperties = class
interface IDictionary
interface ICollection
interface IEnumerable
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Security.SecurityCritical>]
type BaseChannelObjectWithProperties = class
interface IDictionary
interface ICollection
interface IEnumerable
Public MustInherit Class BaseChannelObjectWithProperties
Implements IDictionary
- Herança
-
BaseChannelObjectWithProperties
- Derivado
- Atributos
- Implementações
Exemplos
[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
Comentários
BaseChannelObjectWithProperties é a classe base para BaseChannelWithProperties e BaseChannelSinkWithProperties .BaseChannelObjectWithProperties is the base class for BaseChannelWithProperties and BaseChannelSinkWithProperties.
BaseChannelWithProperties e BaseChannelSinkWithProperties podem ser usados como as classes base para canais e coletores de canal que fornecem propriedades nomeadas.BaseChannelWithProperties and BaseChannelSinkWithProperties can be used as the base classes for channels and channel sinks that provide named properties.
BaseChannelObjectWithProperties manipula a tarefa complexa de solicitar um objeto de canal para suas propriedades.BaseChannelObjectWithProperties handles the complex task of asking a channel object for its properties.
Essa classe faz uma demanda de link e uma demanda de herança no nível de classe.This class makes a link demand and an inheritance demand at the class level. Um SecurityException é gerado quando o chamador imediato ou a classe derivada não tem permissão de infraestrutura.A SecurityException is thrown when either the immediate caller or the derived class does not have infrastructure permission. Para obter detalhes sobre as demandas de segurança, consulte demandas de link e demandas de herança.For details about security demands, see Link Demands and Inheritance Demands.
Notas aos Implementadores
Ao herdar do BaseChannelObjectWithProperties , você deve substituir a Keys propriedade e a Item[Object] propriedade.When you inherit from BaseChannelObjectWithProperties, you must override the Keys property and the Item[Object] property.
Construtores
| BaseChannelObjectWithProperties() |
Inicializa uma nova instância da classe BaseChannelObjectWithProperties.Initializes a new instance of the BaseChannelObjectWithProperties class. |
Propriedades
| Count |
Obtém o número de propriedades associadas ao objeto de canal.Gets the number of properties associated with the channel object. |
| IsFixedSize |
Obtém um valor que indica se o número de propriedades que podem ser inseridas no canal de objeto é fixo.Gets a value that indicates whether the number of properties that can be entered into the channel object is fixed. |
| IsReadOnly |
Obtém um valor que indica se a coleção de propriedades no objeto de canal é somente leitura.Gets a value that indicates whether the collection of properties in the channel object is read-only. |
| IsSynchronized |
Obtém um valor que indica se o dicionário de propriedades de objeto de canal é sincronizado.Gets a value that indicates whether the dictionary of channel object properties is synchronized. |
| Item[Object] |
Quando substituída em uma classe derivada, obtém ou define a propriedade associada à chave especificada.When overridden in a derived class, gets or sets the property that is associated with the specified key. |
| Keys |
Quando substituída em uma classe derivada, obtém um ICollection de chaves ao qual as propriedades de objeto de canal estão associadas.When overridden in a derived class, gets a ICollection of keys that the channel object properties are associated with. |
| Properties |
Obtém um IDictionary das propriedades de canal associadas ao objeto de canal.Gets a IDictionary of the channel properties associated with the channel object. |
| SyncRoot |
Obtém um objeto usado para sincronizar o acesso ao BaseChannelObjectWithProperties.Gets an object that is used to synchronize access to the BaseChannelObjectWithProperties. |
| Values |
Obtém um ICollection dos valores das propriedades associadas ao objeto de canal.Gets a ICollection of the values of the properties associated with the channel object. |
Métodos
| Add(Object, Object) |
Gera uma NotSupportedException.Throws a NotSupportedException. |
| Clear() |
Gera uma NotSupportedException.Throws a NotSupportedException. |
| Contains(Object) |
Retorna um valor que indica se o objeto de canal contém uma propriedade associada à chave especificada.Returns a value that indicates whether the channel object contains a property that is associated with the specified key. |
| CopyTo(Array, Int32) |
Gera uma NotSupportedException.Throws a NotSupportedException. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object. (Herdado de Object) |
| GetEnumerator() |
Retorna um IDictionaryEnumerator que enumera em todas as propriedades associadas ao objeto de canal.Returns a IDictionaryEnumerator that enumerates over all the properties associated with the channel object. |
| GetHashCode() |
Serve como a função de hash padrão.Serves as the default hash function. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual.Gets the Type of the current instance. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object. (Herdado de Object) |
| Remove(Object) |
Gera uma NotSupportedException.Throws a NotSupportedException. |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object. (Herdado de Object) |
Implantações explícitas de interface
| IEnumerable.GetEnumerator() |
Retorna um IEnumerator que enumera em todas as propriedades associadas ao objeto de canal.Returns a IEnumerator that enumerates over all the properties that are associated with the channel object. |
Métodos de Extensão
| Cast<TResult>(IEnumerable) |
Converte os elementos de um IEnumerable para o tipo especificado.Casts the elements of an IEnumerable to the specified type. |
| OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base em um tipo especificado.Filters the elements of an IEnumerable based on a specified type. |
| AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta.Enables parallelization of a query. |
| AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable.Converts an IEnumerable to an IQueryable. |