Language

MessageEncoder.WriteMessage メソッド

定義

派生クラスでオーバーライドされると、指定したストリームまたはバッファーにメッセージを書き込みます。

オーバーロード

名前 説明
WriteMessage(Message, Stream)

派生クラスでオーバーライドされると、指定したストリームにメッセージを書き込みます。

WriteMessage(Message, Int32, BufferManager)

指定したサイズ未満のメッセージをバイト配列バッファーに書き込みます。

WriteMessage(Message, Int32, BufferManager, Int32)

派生クラスでオーバーライドされると、指定したオフセットのバイト配列バッファーに、指定したサイズ未満のメッセージを書き込みます。

WriteMessage(Message, Stream)

ソース:
MessageEncoder.cs
ソース:
MessageEncoder.cs
ソース:
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)

ソース:
MessageEncoder.cs
ソース:
MessageEncoder.cs
ソース:
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>型のbyte。

注釈

このメソッドは、WriteMessage(Message, Int32, BufferManager, Int32) = 0 でmessageOffset抽象メソッドを呼び出します。

適用対象

WriteMessage(Message, Int32, BufferManager, Int32)

ソース:
MessageEncoder.cs
ソース:
MessageEncoder.cs
ソース:
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>型の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)によって呼び出されます。

適用対象