MessageEncoder.WriteMessage Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
När det åsidosätts i en härledd klass skriver du ett meddelande till en angiven dataström eller buffert.
Överlagringar
| Name | Description |
|---|---|
| WriteMessage(Message, Stream) |
När det åsidosätts i en härledd klass skriver du ett meddelande till en angiven ström. |
| WriteMessage(Message, Int32, BufferManager) |
Skriver ett meddelande som är mindre än en angiven storlek till en bytematrisbuffert. |
| WriteMessage(Message, Int32, BufferManager, Int32) |
När det åsidosättas i en härledd klass skriver du ett meddelande med mindre än en angiven storlek till en bytematrisbuffert vid den angivna förskjutningen. |
WriteMessage(Message, Stream)
När det åsidosätts i en härledd klass skriver du ett meddelande till en angiven ström.
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)
Parametrar
Exempel
Följande kod visar hur du implementerar WriteMessage(Message, Stream) metoden.
public override void WriteMessage(Message message, Stream stream)
{
XmlWriter writer = XmlWriter.Create(stream, this.writerSettings);
message.WriteMessage(writer);
writer.Close();
}
Gäller för
WriteMessage(Message, Int32, BufferManager)
Skriver ett meddelande som är mindre än en angiven storlek till en bytematrisbuffert.
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)
Parametrar
- maxMessageSize
- Int32
Den maximala meddelandestorleken som kan skrivas.
- bufferManager
- BufferManager
Som BufferManager hanterar bufferten som meddelandet skrivs till.
Returer
En ArraySegment<T> typ byte som tillhandahåller bufferten som meddelandet serialiseras till.
Kommentarer
Den här metoden anropar den abstrakta metoden WriteMessage(Message, Int32, BufferManager, Int32) med messageOffset = 0.
Gäller för
WriteMessage(Message, Int32, BufferManager, Int32)
När det åsidosättas i en härledd klass skriver du ett meddelande med mindre än en angiven storlek till en bytematrisbuffert vid den angivna förskjutningen.
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)
Parametrar
- maxMessageSize
- Int32
Den maximala meddelandestorleken som kan skrivas.
- bufferManager
- BufferManager
Som BufferManager hanterar bufferten som meddelandet skrivs till.
- messageOffset
- Int32
Förskjutningen av segmentet som börjar från början av bytematrisen som tillhandahåller bufferten.
Returer
En ArraySegment<T> typ byte som tillhandahåller bufferten som meddelandet serialiseras till.
Exempel
Följande kod visar hur du implementerar WriteMessage(Message, Int32, BufferManager, Int32) metoden.
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;
}
Kommentarer
Den här metoden anropas av WriteMessage(Message, Int32, BufferManager, Int32).