Partilhar via


BodyWriter Classe

Definição

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.

Aplica-se a