BodyWriter Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa o gravador do corpo da mensagem.
public ref class BodyWriter abstract
public abstract class BodyWriter
type BodyWriter = class
Public MustInherit Class BodyWriter
- Herança
-
BodyWriter
- Derivado
Exemplos
O exemplo a seguir mostra como derivar uma classe de BodyWriter. Essa substituição usa uma matriz de cadeias de caracteres e as grava em um XmlDictionaryWriter.
using System;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Xml;
namespace UEBodyWriter
{
class MyBodyWriter : BodyWriter
{
const string textTag = "text";
string[] bodySegment;
public MyBodyWriter(string[] strData) : base(true)
{
int length = strData.Length;
this.bodySegment = new string[length];
for (int i = 0; i < length; i++)
{
this.bodySegment[i] = strData[i];
}
}
protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
{
writer.WriteStartElement(textTag);
foreach (string str in bodySegment)
{
writer.WriteString(str);
}
writer.WriteEndElement();
}
}
class Program
{
static void Main(string[] args)
{
string[] strings = {"Hello", "world"};
MyBodyWriter bw = new MyBodyWriter(strings);
StringBuilder strBuilder = new StringBuilder(10);
XmlWriter writer = XmlWriter.Create(strBuilder);
XmlDictionaryWriter dictionaryWriter = XmlDictionaryWriter.CreateDictionaryWriter(writer);
bw.WriteBodyContents(dictionaryWriter);
dictionaryWriter.Flush();
}
}
}
Imports System.Text
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Xml
Namespace UEBodyWriter
Friend Class MyBodyWriter
Inherits BodyWriter
Private Const textTag As String = "text"
Private bodySegment() As String
Public Sub New(ByVal strData() As String)
MyBase.New(True)
Dim length = strData.Length
Me.bodySegment = New String(length - 1){}
For i = 0 To length - 1
Me.bodySegment(i) = strData(i)
Next i
End Sub
Protected Overrides Sub OnWriteBodyContents(ByVal writer As XmlDictionaryWriter)
writer.WriteStartElement(textTag)
For Each str As String In bodySegment
writer.WriteString(str)
Next str
writer.WriteEndElement()
End Sub
End Class
Module Module1
Sub Main(ByVal args() As String)
Dim strings() As String = {"Hello", "world"}
Dim bw As New MyBodyWriter(strings)
Dim strBuilder As New StringBuilder(10)
Dim writer = XmlWriter.Create(strBuilder)
Dim dictionaryWriter = XmlDictionaryWriter.CreateDictionaryWriter(writer)
bw.WriteBodyContents(dictionaryWriter)
dictionaryWriter.Flush()
End Sub
End Module
End Namespace
Comentários
Uma mensagem consiste em cabeçalhos e um corpo. Os cabeçalhos são armazenados em buffer e o corpo é transmitido. Como o corpo é transmitido, o usuário não pode passar o conteúdo real do corpo para uma mensagem. Em vez disso, o usuário deve passar uma classe que saiba como escrever o corpo quando solicitado a fazê-lo. Isso é feito passando uma classe derivada de BodyWriter para o Message. Uma mensagem chama a classe derivada de BodyWriter sempre que requer que o corpo seja gravado usando um XmlWriter.
Construtores
BodyWriter(Boolean) |
Inicializa uma nova instância da classe BodyWriter que indica se é para armazenar em buffer explicitamente. |
Propriedades
IsBuffered |
Obtém um valor que indica se o método de gravação pode ser chamado várias vezes. |
Métodos
BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Começa a gravar o conteúdo do corpo para o gravador de corpo com estado, retorno de chamada e gravador especificados. |
CreateBufferedCopy(Int32) |
Cria uma cópia em buffer do corpo. |
EndWriteBodyContents(IAsyncResult) |
Termina a gravação do conteúdo do corpo. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Aciona um evento quando o gravador do corpo começa a gravar o conteúdo do corpo com o estado, retorno de chamada e gravador especificados. |
OnCreateBufferedCopy(Int32) |
Fornece um ponto de extensibilidade quando o conteúdo do corpo é gravado. |
OnEndWriteBodyContents(IAsyncResult) |
Aciona um evento quando o gravador de corpo termina a gravação do conteúdo do corpo. |
OnWriteBodyContents(XmlDictionaryWriter) |
Quando implementado, fornece um ponto de extensibilidade quando o conteúdo do corpo é gravado. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
WriteBodyContents(XmlDictionaryWriter) |
Grava o conteúdo do corpo da mensagem. |