MessageEncoder.WriteMessage 메서드

정의

파생 클래스에서 재정의되는 경우 지정된 스트림 또는 버퍼에 메시지를 씁니다.

오버로드

Name Description
WriteMessage(Message, Stream)

파생 클래스에서 재정의되는 경우 지정된 스트림에 메시지를 씁니다.

WriteMessage(Message, Int32, BufferManager)

지정된 크기보다 작은 메시지를 바이트 배열 버퍼에 씁니다.

WriteMessage(Message, Int32, BufferManager, Int32)

파생 클래스에서 재정의되는 경우 지정된 크기보다 작은 메시지를 지정된 오프셋의 바이트 배열 버퍼에 씁니다.

WriteMessage(Message, Stream)

Source:
MessageEncoder.cs
Source:
MessageEncoder.cs
Source:
MessageEncoder.cs

파생 클래스에서 재정의되는 경우 지정된 스트림에 메시지를 씁니다.

public:
 abstract void WriteMessage(System::ServiceModel::Channels::Message ^ message, System::IO::Stream ^ stream);
public abstract void WriteMessage(System.ServiceModel.Channels.Message message, System.IO.Stream stream);
abstract member WriteMessage : System.ServiceModel.Channels.Message * System.IO.Stream -> unit
Public MustOverride Sub WriteMessage (message As Message, stream As Stream)

매개 변수

message
Message

Message 에 쓸 것입니다stream.

stream
Stream

Stream 기록되는 message 개체입니다.

예제

다음 코드는 메서드를 구현 WriteMessage(Message, Stream) 하는 방법을 보여줍니다.

public override void WriteMessage(Message message, Stream stream)
{
    XmlWriter writer = XmlWriter.Create(stream, this.writerSettings);
    message.WriteMessage(writer);
    writer.Close();
}

적용 대상

WriteMessage(Message, Int32, BufferManager)

Source:
MessageEncoder.cs
Source:
MessageEncoder.cs
Source:
MessageEncoder.cs

지정된 크기보다 작은 메시지를 바이트 배열 버퍼에 씁니다.

public:
 ArraySegment<System::Byte> WriteMessage(System::ServiceModel::Channels::Message ^ message, int maxMessageSize, System::ServiceModel::Channels::BufferManager ^ bufferManager);
public ArraySegment<byte> WriteMessage(System.ServiceModel.Channels.Message message, int maxMessageSize, System.ServiceModel.Channels.BufferManager bufferManager);
member this.WriteMessage : System.ServiceModel.Channels.Message * int * System.ServiceModel.Channels.BufferManager -> ArraySegment<byte>
Public Function WriteMessage (message As Message, maxMessageSize As Integer, bufferManager As BufferManager) As ArraySegment(Of Byte)

매개 변수

message
Message

Message 메시지 버퍼에 쓸 수 있습니다.

maxMessageSize
Int32

쓸 수 있는 최대 메시지 크기입니다.

bufferManager
BufferManager

BufferManager 메시지가 기록되는 버퍼를 관리하는 값입니다.

반품

ArraySegment<T> 메시지가 serialize되는 버퍼를 제공하는 형식 byte 입니다.

설명

이 메서드는 = 0을 사용하여 추상 메서드 WriteMessage(Message, Int32, BufferManager, Int32)messageOffset 호출합니다.

적용 대상

WriteMessage(Message, Int32, BufferManager, Int32)

Source:
MessageEncoder.cs
Source:
MessageEncoder.cs
Source:
MessageEncoder.cs

파생 클래스에서 재정의되는 경우 지정된 크기보다 작은 메시지를 지정된 오프셋의 바이트 배열 버퍼에 씁니다.

public:
 abstract ArraySegment<System::Byte> WriteMessage(System::ServiceModel::Channels::Message ^ message, int maxMessageSize, System::ServiceModel::Channels::BufferManager ^ bufferManager, int messageOffset);
public abstract ArraySegment<byte> WriteMessage(System.ServiceModel.Channels.Message message, int maxMessageSize, System.ServiceModel.Channels.BufferManager bufferManager, int messageOffset);
abstract member WriteMessage : System.ServiceModel.Channels.Message * int * System.ServiceModel.Channels.BufferManager * int -> ArraySegment<byte>
Public MustOverride Function WriteMessage (message As Message, maxMessageSize As Integer, bufferManager As BufferManager, messageOffset As Integer) As ArraySegment(Of Byte)

매개 변수

message
Message

Message 메시지 버퍼에 쓸 수 있습니다.

maxMessageSize
Int32

쓸 수 있는 최대 메시지 크기입니다.

bufferManager
BufferManager

BufferManager 메시지가 기록되는 버퍼를 관리하는 값입니다.

messageOffset
Int32

버퍼를 제공하는 바이트 배열의 시작부터 시작하는 세그먼트의 오프셋입니다.

반품

ArraySegment<T> 메시지가 serialize되는 버퍼를 제공하는 형식 byte 입니다.

예제

다음 코드는 메서드를 구현 WriteMessage(Message, Int32, BufferManager, Int32) 하는 방법을 보여줍니다.

public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
{
    MemoryStream stream = new MemoryStream();
    XmlWriter writer = XmlWriter.Create(stream, this.writerSettings);
    message.WriteMessage(writer);
    writer.Close();

    byte[] messageBytes = stream.GetBuffer();
    int messageLength = (int)stream.Position;
    stream.Close();

    int totalLength = messageLength + messageOffset;
    byte[] totalBytes = bufferManager.TakeBuffer(totalLength);
    Array.Copy(messageBytes, 0, totalBytes, messageOffset, messageLength);

    ArraySegment<byte> byteArray = new ArraySegment<byte>(totalBytes, messageOffset, messageLength);
    return byteArray;
}

설명

이 메서드는 .에 의해 WriteMessage(Message, Int32, BufferManager, Int32)호출됩니다.

적용 대상