BodyWriter Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет модуль записи текста сообщения.
public ref class BodyWriter abstract
public abstract class BodyWriter
type BodyWriter = class
Public MustInherit Class BodyWriter
- Наследование
-
BodyWriter
- Производный
Примеры
В следующем примере показано, как создать класс, производный от класса BodyWriter. Данное переопределение принимает массив строк и записывает их в объект 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
Комментарии
Сообщение состоит из заголовков и текста сообщения. Заголовки буферизуются, а текст сообщения является потоковым. Поскольку текст является потоковым, пользователь не может передать фактическое содержимое текста в сообщение. Вместо этого, пользователь должен передать класс, который может записать текст по запросу. Для этого можно передать класс, производный от класса BodyWriter, классу Message. Сообщение вызывает класс, производный от класса BodyWriter, когда требуется выполнить запись текста сообщения с использованием класса XmlWriter.
Конструкторы
BodyWriter(Boolean) |
Инициализирует новый экземпляр класса BodyWriter, который явно указывает, следует ли использовать буферизацию. |
Свойства
IsBuffered |
Возвращает значение, указывающее на возможность вызова метода записи несколько раз. |
Методы
BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Запускает запись содержимого текста сообщения для модуля записи с указанным модулем записи, обратным вызовом и состоянием. |
CreateBufferedCopy(Int32) |
Создает буферизованную копию текста сообщения. |
EndWriteBodyContents(IAsyncResult) |
Завершает запись содержимого текста сообщения. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Создает событие, когда средство записи тела начинает запись содержимого тела с указанным модулем записи, обратным вызовом и состоянием. |
OnCreateBufferedCopy(Int32) |
Предоставляет точку расширения при записи содержимого текста сообщения. |
OnEndWriteBodyContents(IAsyncResult) |
Вызывает событие, когда средство записи тела завершает запись содержимого тела. |
OnWriteBodyContents(XmlDictionaryWriter) |
При реализации предоставляет точку расширения при записи содержимого тела сообщения. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
WriteBodyContents(XmlDictionaryWriter) |
Записывает содержимое тела сообщения. |