Sdílet prostřednictvím


BodyWriter Třída

Definice

Představuje autor textu zprávy.

public ref class BodyWriter abstract
public abstract class BodyWriter
type BodyWriter = class
Public MustInherit Class BodyWriter
Dědičnost
BodyWriter
Odvozené

Příklady

Následující příklad ukazuje, jak odvodit třídu z BodyWritertřídy . Toto přepsání přebírá pole řetězců a zapisuje je do 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

Poznámky

Zpráva se skládá ze záhlaví a textu. Hlavičky se ukládají do vyrovnávací paměti a tělo se streamuje. Protože je tělo streamováno, uživatel nemůže předat skutečný obsah textu do zprávy. Místo toho musí uživatel předat třídu, která ví, jak napsat tělo, když se o to požádá. To se provádí předáním třídy odvozené z BodyWriter do třídy Message. Zpráva volá třídu odvozenou z BodyWriter vždy, když vyžaduje, aby tělo bylo zapsáno pomocí XmlWriter.

Konstruktory

BodyWriter(Boolean)

Inicializuje novou instanci BodyWriter třídy, která explicitně označuje, zda se má ukládat do vyrovnávací paměti.

Vlastnosti

IsBuffered

Získá hodnotu, která označuje, zda write metoda lze volat vícekrát.

Metody

BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Začne psát obsah těla pro body writer se zadaným zapisovačem, zpětným voláním a stavem.

CreateBufferedCopy(Int32)

Vytvoří kopii těla ve vyrovnávací paměti.

EndWriteBodyContents(IAsyncResult)

Ukončí zápis základního obsahu.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Vyvolá událost, když zapisovač těla začne psát obsah těla se zadaným zapisovačem, zpětné volání a stav.

OnCreateBufferedCopy(Int32)

Poskytuje bod rozšiřitelnosti při zápisu obsahu těla.

OnEndWriteBodyContents(IAsyncResult)

Vyvolá událost, když zapisovač těla ukončí psaní obsahu těla.

OnWriteBodyContents(XmlDictionaryWriter)

Při implementaci poskytuje bod rozšiřitelnosti při zápisu obsahu textu.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
WriteBodyContents(XmlDictionaryWriter)

Zapíše obsah textu zprávy.

Platí pro