BodyWriter Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa o autor do corpo da mensagem.
public ref class BodyWriter abstract
public abstract class BodyWriter
type BodyWriter = class
Public MustInherit Class BodyWriter
- Herança
-
BodyWriter
- Derivado
Exemplos
O exemplo seguinte mostra como derivar uma classe a partir de BodyWriter. Este override recebe um array de strings e escreve-as num 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
Observações
Uma mensagem consiste em cabeçalhos e um corpo. Os cabeçalhos são armazenados em buffer e o corpo é transmitido em streaming. Como o corpo é transmitido em streaming, o utilizador não pode passar o conteúdo real do corpo para uma mensagem. Em vez disso, o utilizador deve passar numa classe que sabe escrever o corpo quando solicitado. Isto faz-se passando uma classe derivada de BodyWriter para o Message. Uma mensagem chama a classe derivada de BodyWriter sempre que exige que o corpo seja escrito usando um XmlWriter.
Construtores
| Name | Description |
|---|---|
| BodyWriter(Boolean) |
Inicializa uma nova instância da BodyWriter classe que indica explicitamente se deve fazer buffer. |
Propriedades
| Name | Description |
|---|---|
| IsBuffered |
Obtém um valor que indica se o método de escrita pode ser chamado várias vezes. |
Métodos
| Name | Description |
|---|---|
| BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Começa a escrever o conteúdo do corpo para o escritor com o autor especificado, o retorno de chamada e o estado. |
| CreateBufferedCopy(Int32) |
Cria uma cópia bufferizada do corpo. |
| EndWriteBodyContents(IAsyncResult) |
Termina a escrita do conteúdo do corpo. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Surge um evento quando o body writer começa a escrever o conteúdo do corpo com o autor especificado, chamada de retorno e estado. |
| OnCreateBufferedCopy(Int32) |
Fornece um ponto de extensibilidade quando o conteúdo do corpo é escrito. |
| OnEndWriteBodyContents(IAsyncResult) |
Levanta um evento quando o body writer termina de escrever o conteúdo do corpo. |
| OnWriteBodyContents(XmlDictionaryWriter) |
Quando implementado, fornece um ponto de extensibilidade quando o conteúdo do corpo é escrito. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| WriteBodyContents(XmlDictionaryWriter) |
Escreve o conteúdo do corpo da mensagem. |