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