Compartir a través de


BodyWriter Clase

Definición

Representa el sistema de escritura del cuerpo del mensaje.

public ref class BodyWriter abstract
public abstract class BodyWriter
type BodyWriter = class
Public MustInherit Class BodyWriter
Herencia
BodyWriter
Derivado

Ejemplos

El ejemplo siguiente muestra cómo derivar una clase de BodyWriter. Esto invalida tomas en una matriz de cadenas y las escribe en un 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

Comentarios

Un mensaje está compuesto de encabezados y cuerpo. Los encabezados están almacenados en búfer y el cuerpo se transmite. Dado que el cuerpo se transmite, el usuario no puede pasar el contenido real del cuerpo a un mensaje. En su lugar, el usuario debe pasar una clase que sabe cómo escribir el cuerpo cuando se le pida. Esto se hace pasando una clase derivada de BodyWriter a Message. Un mensaje llama a la clase derivada de BodyWriter cada vez que exige escribir el cuerpo utilizando XmlWriter.

Constructores

BodyWriter(Boolean)

Inicializa una nueva instancia de la clase BodyWriter que indica explícitamente si se debe almacenar en búfer.

Propiedades

IsBuffered

Obtiene un valor que indica si se puede llamar al método de escritura varias veces.

Métodos

BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Inicia la escritura del contenido del cuerpo para el escritor de cuerpo con el escritor, la devolución de llamada y el estado especificados.

CreateBufferedCopy(Int32)

Crea una copia del cuerpo almacenada en búfer.

EndWriteBodyContents(IAsyncResult)

Finaliza la escritura del contenido del cuerpo.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

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

Genera un evento cuando el sistema de escritura de cuerpo empieza a escribir contenido del cuerpo con el escritor, la devolución de llamada y el estado especificados.

OnCreateBufferedCopy(Int32)

Proporciona un punto de extensibilidad cuando se escribe el contenido del cuerpo.

OnEndWriteBodyContents(IAsyncResult)

Genera un evento cuando el sistema de escritura de cuerpo termina de escribir contenido del cuerpo.

OnWriteBodyContents(XmlDictionaryWriter)

Cuando se implementa, proporciona un punto de extensibilidad al escribir el contenido del cuerpo.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
WriteBodyContents(XmlDictionaryWriter)

Escribe el contenido del cuerpo del mensaje.

Se aplica a