BodyWriter Classe

Definizione

Rappresenta il writer del corpo del messaggio.Represents the writer of the message body.

public ref class BodyWriter abstract
public abstract class BodyWriter
type BodyWriter = class
Public MustInherit Class BodyWriter
Ereditarietà
BodyWriter
Derivato

Esempio

Nell'esempio seguente viene illustrato come derivare una classe da BodyWriter.The following example shows how to derive a class from BodyWriter. Questo override prende una matrice di stringhe e le scrive in un XmlDictionaryWriter.This override takes in an array of strings and writes them to a 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

Commenti

Un messaggio è costituito da intestazioni e da un corpo.A message consists of headers and a body. Le intestazioni vengono memorizzate nel buffer e il corpo viene inviato in un flusso.The headers are buffered and the body is streamed. Dato che il corpo viene inviato in un flusso, l'utente non può passare il contenuto effettivo del corpo a un messaggio.Because the body is streamed, the user cannot pass the actual content of the body to a message. Deve invece passare una classe che sa come scrivere il corpo quando viene chiesto di farlo.Instead the user must pass a class that knows how to write the body when asked to do so. A tale fine, passare una classe derivata da BodyWriter a Message.This is done by passing a class derived from BodyWriter to the Message. Un messaggio chiama la classe derivata da BodyWriter ogni volta che richiede che il corpo venga scritto utilizzando un XmlWriter.A message calls the class derived from BodyWriter whenever it requires the body to be written using an XmlWriter.

Costruttori

BodyWriter(Boolean)

Inizializza una nuova istanza della classe BodyWriter che indica in modo esplicito se memorizzare nel buffer.Initializes a new instance of the BodyWriter class that explicitly indicates whether to buffer.

Proprietà

IsBuffered

Ottiene un valore che indica se il metodo di scrittura può essere chiamato più volte.Gets a value that indicates whether the write method can be called multiple times.

Metodi

BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Avvia la scrittura del contenuto del corpo per il body writer con il writer, il callback e lo stato specificati.Starts to write body contents for the body writer with specified writer, callback and state.

CreateBufferedCopy(Int32)

Crea una copia del corpo memorizzata nel buffer.Creates a buffered copy of the body.

EndWriteBodyContents(IAsyncResult)

Termina la scrittura del contenuto del corpo.Ends the writing of body contents.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object)

Genera un evento quando il writer del corpo avvia la scrittura del contenuto del corpo con il writer, il callback e lo stato specificati.Raises an event when the body writer starts to write body contents with specified writer, callback and state.

OnCreateBufferedCopy(Int32)

Fornisce un punto di estensibilità quando viene scritto il contenuto del corpo.Provides an extensibility point when the body contents are written.

OnEndWriteBodyContents(IAsyncResult)

Genera un evento quando il writer del corpo termina la scrittura del contenuto del corpo.Raises an event when the body writer ends writing body contents.

OnWriteBodyContents(XmlDictionaryWriter)

Se implementato, fornisce un punto di estendibilità quando viene scritto il contenuto del corpo.When implemented, provides an extensibility point when the body contents are written.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)
WriteBodyContents(XmlDictionaryWriter)

Scrive il contenuto del corpo del messaggio.Writes out the contents of the message body.

Si applica a