MessageEncoder.WriteMessage 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파생 클래스에서 재정의되는 경우 지정된 스트림 또는 버퍼에 메시지를 씁니다.
오버로드
WriteMessage(Message, Stream) |
파생 클래스에서 재정의되는 경우 지정된 스트림에 메시지를 씁니다. |
WriteMessage(Message, Int32, BufferManager) |
지정된 크기보다 작은 메시지를 바이트 배열 버퍼에 씁니다. |
WriteMessage(Message, Int32, BufferManager, Int32) |
파생 클래스에서 재정의되는 경우 지정된 크기보다 작은 메시지를 바이트 배열 버퍼의 지정된 오프셋에 씁니다. |
WriteMessage(Message, Stream)
- Source:
- MessageEncoder.cs
- Source:
- MessageEncoder.cs
- Source:
- 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)
매개 변수
예제
다음 코드는 메서드를 구현 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)
- Source:
- MessageEncoder.cs
- Source:
- MessageEncoder.cs
- Source:
- 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)
매개 변수
- maxMessageSize
- Int32
쓸 수 있는 최대 메시지 크기입니다.
- bufferManager
- BufferManager
메시지를 쓸 대상 버퍼를 관리하는 BufferManager입니다.
반환
메시지를 serialize할 대상 버퍼를 제공하는 byte
형식의 ArraySegment<T>입니다.
설명
이 메서드는 = 0을 사용하여 추상 메서드 WriteMessage(Message, Int32, BufferManager, Int32) 를 messageOffset
호출합니다.
적용 대상
WriteMessage(Message, Int32, BufferManager, Int32)
- Source:
- MessageEncoder.cs
- Source:
- MessageEncoder.cs
- Source:
- 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)
매개 변수
- maxMessageSize
- Int32
쓸 수 있는 최대 메시지 크기입니다.
- bufferManager
- BufferManager
메시지를 쓸 대상 버퍼를 관리하는 BufferManager입니다.
- messageOffset
- Int32
버퍼를 제공하는 바이트 배열의 맨 앞에서 시작되는 세그먼트의 오프셋입니다.
반환
메시지를 serialize할 대상 버퍼를 제공하는 byte
형식의 ArraySegment<T>입니다.
예제
다음 코드는 메서드를 구현 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