MessageEncoder.WriteMessage メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
派生クラスでオーバーライドされた場合、指定したストリームまたはバッファーにメッセージを書き込みます。
オーバーロード
WriteMessage(Message, Stream) |
派生クラスでオーバーライドされた場合、指定したストリームにメッセージを書き込みます。 |
WriteMessage(Message, Int32, BufferManager) |
指定したサイズより小さいメッセージを、バイト配列バッファーに書き込みます。 |
WriteMessage(Message, Int32, BufferManager, Int32) |
派生クラスでオーバーライドされた場合、指定したサイズより小さいメッセージを、指定したオフセットのバイト配列バッファーに書き込みます。 |
WriteMessage(Message, Stream)
派生クラスでオーバーライドされた場合、指定したストリームにメッセージを書き込みます。
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)
パラメーター
例
次のコードは、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)
指定したサイズより小さいメッセージを、バイト配列バッファーに書き込みます。
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)
パラメーター
- maxMessageSize
- Int32
書き込み可能な最大メッセージ サイズ。
- bufferManager
- BufferManager
メッセージの書き込み先であるバッファーを管理する BufferManager。
戻り値
メッセージのシリアル化先であるバッファーを提供する ArraySegment<T> 型の byte
。
注釈
このメソッドは、抽象メソッド WriteMessage(Message, Int32, BufferManager, Int32) を、messageOffset
= 0 を指定して呼び出します。
適用対象
WriteMessage(Message, Int32, BufferManager, Int32)
派生クラスでオーバーライドされた場合、指定したサイズより小さいメッセージを、指定したオフセットのバイト配列バッファーに書き込みます。
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)
パラメーター
- 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) によって呼び出されます。
適用対象
.NET