BodyWriter Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje składnik zapisywania treści wiadomości.
public ref class BodyWriter abstract
public abstract class BodyWriter
type BodyWriter = class
Public MustInherit Class BodyWriter
- Dziedziczenie
-
BodyWriter
- Pochodne
Przykłady
W poniższym przykładzie pokazano, jak utworzyć klasę z BodyWriterklasy . To zastąpienie przyjmuje tablicę ciągów i zapisuje je w obiekcie 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
Uwagi
Komunikat składa się z nagłówków i treści. Nagłówki są buforowane, a treść jest przesyłana strumieniowo. Ponieważ treść jest przesyłana strumieniowo, użytkownik nie może przekazać rzeczywistej zawartości treści do wiadomości. Zamiast tego użytkownik musi przekazać klasę, która wie, jak napisać treść, gdy zostanie to poproszona. Odbywa się to przez przekazanie klasy pochodzącej z BodyWriter klasy do klasy Message. Komunikat wywołuje klasę pochodną za BodyWriter każdym razem, gdy wymaga, aby treść została napisana przy użyciu klasy XmlWriter.
Konstruktory
BodyWriter(Boolean) |
Inicjuje BodyWriter nowe wystąpienie klasy, które jawnie wskazuje, czy buforować. |
Właściwości
IsBuffered |
Pobiera wartość wskazującą, czy można wywołać metodę zapisu wiele razy. |
Metody
BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Rozpoczyna pisanie zawartości treści składnika zapisywania treści z określonym zapisem, wywołaniem zwrotnym i stanem. |
CreateBufferedCopy(Int32) |
Tworzy buforowaną kopię treści. |
EndWriteBodyContents(IAsyncResult) |
Kończy pisanie treści. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Zgłasza zdarzenie, gdy składnik zapisywania treści zaczyna zapisywać zawartość treści za pomocą określonego składnika zapisywania, wywołania zwrotnego i stanu. |
OnCreateBufferedCopy(Int32) |
Zapewnia punkt rozszerzalności, gdy zawartość treści jest zapisywana. |
OnEndWriteBodyContents(IAsyncResult) |
Zgłasza zdarzenie, gdy składnik zapisywania treści kończy pisanie zawartości treści. |
OnWriteBodyContents(XmlDictionaryWriter) |
Po zaimplementowaniu zapewnia punkt rozszerzalności podczas zapisywania zawartości treści. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
WriteBodyContents(XmlDictionaryWriter) |
Zapisuje zawartość treści wiadomości. |