다음을 통해 공유


MessageEncoder.WriteMessage 메서드

정의

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

오버로드

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

stream에 쓸 Message입니다.

stream
Stream

message를 쓸 대상 Stream 개체입니다.

예제

다음 코드는 메서드를 구현 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입니다.

반환

메시지를 serialize할 대상 버퍼를 제공하는 byte 형식의 ArraySegment<T>입니다.

설명

이 메서드는 = 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

버퍼를 제공하는 바이트 배열의 맨 앞에서 시작되는 세그먼트의 오프셋입니다.

반환

메시지를 serialize할 대상 버퍼를 제공하는 byte 형식의 ArraySegment<T>입니다.

예제

다음 코드는 메서드를 구현 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)에 의해 호출됩니다.

적용 대상