Udostępnij przez


MessageEncoder.WriteMessage Metoda

Definicja

Po zastąpieniu w klasie pochodnej zapisuje komunikat do określonego strumienia lub buforu.

Przeciążenia

WriteMessage(Message, Stream)

Gdy zastąpisz klasę pochodną, zapisuje komunikat do określonego strumienia.

WriteMessage(Message, Int32, BufferManager)

Zapisuje komunikat mniejszy niż określony rozmiar buforu tablicy bajtowej.

WriteMessage(Message, Int32, BufferManager, Int32)

Po przesłonięciu w klasie pochodnej zapisuje komunikat o rozmiarze mniejszym niż określony rozmiar do buforu tablicy bajtowej w określonym przesunięciu.

WriteMessage(Message, Stream)

Źródło:
MessageEncoder.cs
Źródło:
MessageEncoder.cs
Źródło:
MessageEncoder.cs

Gdy zastąpisz klasę pochodną, zapisuje komunikat do określonego strumienia.

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)

Parametry

message
Message

Element Message do zapisu w obiekcie stream.

stream
Stream

Stream Obiekt, do którego message jest zapisywany.

Przykłady

Poniższy kod pokazuje, jak zaimplementować metodę WriteMessage(Message, Stream) .

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

Dotyczy

WriteMessage(Message, Int32, BufferManager)

Źródło:
MessageEncoder.cs
Źródło:
MessageEncoder.cs
Źródło:
MessageEncoder.cs

Zapisuje komunikat mniejszy niż określony rozmiar buforu tablicy bajtowej.

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)

Parametry

message
Message

Element Message do zapisu w buforze komunikatów.

maxMessageSize
Int32

Maksymalny rozmiar wiadomości, który można zapisać.

bufferManager
BufferManager

Element BufferManager , który zarządza buforem, do którego jest zapisywany komunikat.

Zwraca

Typ ArraySegment<T>byte , który zapewnia bufor, do którego jest serializowany komunikat.

Uwagi

Ta metoda wywołuje metodę WriteMessage(Message, Int32, BufferManager, Int32) abstrakcyjną z messageOffset = 0.

Dotyczy

WriteMessage(Message, Int32, BufferManager, Int32)

Źródło:
MessageEncoder.cs
Źródło:
MessageEncoder.cs
Źródło:
MessageEncoder.cs

Po przesłonięciu w klasie pochodnej zapisuje komunikat o rozmiarze mniejszym niż określony rozmiar do buforu tablicy bajtowej w określonym przesunięciu.

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)

Parametry

message
Message

Element Message do zapisu w buforze komunikatów.

maxMessageSize
Int32

Maksymalny rozmiar wiadomości, który można zapisać.

bufferManager
BufferManager

Element BufferManager , który zarządza buforem, do którego jest zapisywany komunikat.

messageOffset
Int32

Przesunięcie segmentu rozpoczynającego się od początku tablicy bajtów, która udostępnia bufor.

Zwraca

Typ ArraySegment<T>byte , który zapewnia bufor, do którego jest serializowany komunikat.

Przykłady

Poniższy kod pokazuje, jak zaimplementować metodę 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;
}

Uwagi

Ta metoda jest wywoływana przez WriteMessage(Message, Int32, BufferManager, Int32)metodę .

Dotyczy