MessageEncoder.WriteMessage Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Při přepsání v odvozené třídě zapíše zprávu do zadaného datového proudu nebo vyrovnávací paměti.
Přetížení
WriteMessage(Message, Stream) |
Při přepsání v odvozené třídě zapíše zprávu do zadaného datového proudu. |
WriteMessage(Message, Int32, BufferManager) |
Zapíše zprávu menší než zadanou velikost do vyrovnávací paměti pole bajtů. |
WriteMessage(Message, Int32, BufferManager, Int32) |
Při přepsání v odvozené třídě zapíše zprávu menší než zadanou velikost do vyrovnávací paměti pole bajtů při zadaném posunu. |
WriteMessage(Message, Stream)
- Zdroj:
- MessageEncoder.cs
- Zdroj:
- MessageEncoder.cs
- Zdroj:
- MessageEncoder.cs
Při přepsání v odvozené třídě zapíše zprávu do zadaného datového proudu.
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
Příklady
Následující kód ukazuje, jak implementovat metodu WriteMessage(Message, Stream) .
public override void WriteMessage(Message message, Stream stream)
{
XmlWriter writer = XmlWriter.Create(stream, this.writerSettings);
message.WriteMessage(writer);
writer.Close();
}
Platí pro
WriteMessage(Message, Int32, BufferManager)
- Zdroj:
- MessageEncoder.cs
- Zdroj:
- MessageEncoder.cs
- Zdroj:
- MessageEncoder.cs
Zapíše zprávu menší než zadanou velikost do vyrovnávací paměti pole bajtů.
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
- maxMessageSize
- Int32
Maximální velikost zprávy, kterou lze zapsat.
- bufferManager
- BufferManager
Ten BufferManager , který spravuje vyrovnávací paměť, do které se zpráva zapisuje.
Návraty
byte
TypArraySegment<T>, který poskytuje vyrovnávací paměť, do které je zpráva serializována.
Poznámky
Tato metoda volá abstraktní metodu WriteMessage(Message, Int32, BufferManager, Int32) s messageOffset
= 0.
Platí pro
WriteMessage(Message, Int32, BufferManager, Int32)
- Zdroj:
- MessageEncoder.cs
- Zdroj:
- MessageEncoder.cs
- Zdroj:
- MessageEncoder.cs
Při přepsání v odvozené třídě zapíše zprávu menší než zadanou velikost do vyrovnávací paměti pole bajtů při zadaném posunu.
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
- maxMessageSize
- Int32
Maximální velikost zprávy, kterou lze zapsat.
- bufferManager
- BufferManager
Ten BufferManager , který spravuje vyrovnávací paměť, do které se zpráva zapisuje.
- messageOffset
- Int32
Posun segmentu, který začíná od začátku pole bajtů, které poskytuje vyrovnávací paměť.
Návraty
byte
TypArraySegment<T>, který poskytuje vyrovnávací paměť, do které je zpráva serializována.
Příklady
Následující kód ukazuje, jak implementovat metodu 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;
}
Poznámky
Tuto metodu volá .WriteMessage(Message, Int32, BufferManager, Int32)