BodyWriter Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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. |