BodyWriter Classe

Definição

Representa o autor 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 seguinte mostra como derivar uma classe a partir de BodyWriter. Este override recebe um array de strings e escreve-as num 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

Observações

Uma mensagem consiste em cabeçalhos e um corpo. Os cabeçalhos são armazenados em buffer e o corpo é transmitido em streaming. Como o corpo é transmitido em streaming, o utilizador não pode passar o conteúdo real do corpo para uma mensagem. Em vez disso, o utilizador deve passar numa classe que sabe escrever o corpo quando solicitado. Isto faz-se passando uma classe derivada de BodyWriter para o Message. Uma mensagem chama a classe derivada de BodyWriter sempre que exige que o corpo seja escrito usando um XmlWriter.

Construtores

Name Description
BodyWriter(Boolean)

Inicializa uma nova instância da BodyWriter classe que indica explicitamente se deve fazer buffer.

Propriedades

Name Description
IsBuffered

Obtém um valor que indica se o método de escrita pode ser chamado várias vezes.

Métodos

Name Description
BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Começa a escrever o conteúdo do corpo para o escritor com o autor especificado, o retorno de chamada e o estado.

CreateBufferedCopy(Int32)

Cria uma cópia bufferizada do corpo.

EndWriteBodyContents(IAsyncResult)

Termina a escrita do conteúdo do corpo.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Surge um evento quando o body writer começa a escrever o conteúdo do corpo com o autor especificado, chamada de retorno e estado.

OnCreateBufferedCopy(Int32)

Fornece um ponto de extensibilidade quando o conteúdo do corpo é escrito.

OnEndWriteBodyContents(IAsyncResult)

Levanta um evento quando o body writer termina de escrever o conteúdo do corpo.

OnWriteBodyContents(XmlDictionaryWriter)

Quando implementado, fornece um ponto de extensibilidade quando o conteúdo do corpo é escrito.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
WriteBodyContents(XmlDictionaryWriter)

Escreve o conteúdo do corpo da mensagem.

Aplica-se a