BaseChannelObjectWithProperties 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
속성에 사전 인터페이스를 노출하는 채널 개체의 기본 구현을 제공합니다.
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
- 상속
-
BaseChannelObjectWithProperties
- 파생
- 특성
- 구현
예제
[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;
}
}
};
}
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;
}
}
}
<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
설명
BaseChannelObjectWithProperties은 BaseChannelWithProperties 및 BaseChannelSinkWithProperties의 기본 클래스입니다.
BaseChannelWithProperties 명명 BaseChannelSinkWithProperties 된 속성을 제공하는 채널 및 채널 싱크의 기본 클래스로 사용할 수 있습니다.
BaseChannelObjectWithProperties 는 채널 개체에 해당 속성을 요청하는 복잡한 작업을 처리합니다.
이 클래스는 클래스 수준에서 링크 요청 및 상속 요청을 만듭니다. 직접 호출자 또는 파생 클래스에 인프라 권한이 없는 경우 A SecurityException 가 throw됩니다. 보안 요구 사항에 대한 자세한 내용은 링크 요구를 참조하세요.
구현자 참고
상속 BaseChannelObjectWithProperties할 때 속성과 속성을 재정의 KeysItem[Object] 해야 합니다.
생성자
| Name | Description |
|---|---|
| BaseChannelObjectWithProperties() |
BaseChannelObjectWithProperties 클래스의 새 인스턴스를 초기화합니다. |
속성
| Name | Description |
|---|---|
| Count |
채널 개체와 연결된 속성의 수를 가져옵니다. |
| IsFixedSize |
채널 개체에 입력할 수 있는 속성 수가 고정되어 있는지 여부를 나타내는 값을 가져옵니다. |
| IsReadOnly |
채널 개체의 속성 컬렉션이 읽기 전용인지 여부를 나타내는 값을 가져옵니다. |
| IsSynchronized |
채널 개체 속성의 사전이 동기화되는지 여부를 나타내는 값을 가져옵니다. |
| Item[Object] |
파생 클래스에서 재정의되는 경우 지정된 키와 연결된 속성을 가져오거나 설정합니다. |
| Keys |
파생 클래스에서 재정의되는 경우 채널 개체 속성이 연결된 키를 가져옵니다 ICollection . |
| Properties |
IDictionary 채널 개체와 연결된 채널 속성을 가져옵니다. |
| SyncRoot |
에 대한 액세스를 동기화하는 데 사용되는 개체를 BaseChannelObjectWithProperties가져옵니다. |
| Values |
ICollection 채널 개체와 연결된 속성의 값을 가져옵니다. |
메서드
| Name | Description |
|---|---|
| Add(Object, Object) |
NotSupportedException를 throw합니다. |
| Clear() |
NotSupportedException를 throw합니다. |
| Contains(Object) |
채널 개체에 지정된 키와 연결된 속성이 포함되어 있는지 여부를 나타내는 값을 반환합니다. |
| CopyTo(Array, Int32) |
NotSupportedException를 throw합니다. |
| Equals(Object) |
지정한 개체와 현재 개체가 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| GetEnumerator() |
IDictionaryEnumerator 채널 개체와 연결된 모든 속성에 대해 열거하는 값을 반환합니다. |
| GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
| GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| Remove(Object) |
NotSupportedException를 throw합니다. |
| ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
| Name | Description |
|---|---|
| IEnumerable.GetEnumerator() |
IEnumerator 채널 개체와 연결된 모든 속성을 열거하는 값을 반환합니다. |
확장명 메서드
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
쿼리의 병렬 처리를 사용하도록 설정합니다. |
| AsQueryable(IEnumerable) |
IEnumerable IQueryable변환합니다. |
| Cast<TResult>(IEnumerable) |
IEnumerable 요소를 지정된 형식으로 캐스팅합니다. |
| OfType<TResult>(IEnumerable) |
지정된 형식에 따라 IEnumerable 요소를 필터링합니다. |