BodyWriter Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente l’enregistreur du corps du message.
public ref class BodyWriter abstract
public abstract class BodyWriter
type BodyWriter = class
Public MustInherit Class BodyWriter
- Héritage
-
BodyWriter
- Dérivé
Exemples
L’exemple suivant montre comment dériver une classe à partir de BodyWriter. Cette substitution prend un tableau de chaînes et les écrit dans un 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
Remarques
Un message se compose d’en-têtes et d’un corps. Les en-têtes sont mis en mémoire tampon et le corps est diffusé en continu. Étant donné que le corps est diffusé en continu, l’utilisateur ne peut pas transmettre le contenu réel du corps à un message. Au lieu de cela, l’utilisateur doit passer une classe qui sait comment écrire le corps lorsqu’il est invité à le faire. Pour ce faire, transmettez une classe dérivée de BodyWriter l’objet Message. Un message appelle la classe dérivée de BodyWriter chaque fois que le corps doit être écrit à l’aide d’un XmlWriter.
Constructeurs
| Nom | Description |
|---|---|
| BodyWriter(Boolean) |
Initialise une nouvelle instance de la BodyWriter classe qui indique explicitement s’il faut mettre en mémoire tampon. |
Propriétés
| Nom | Description |
|---|---|
| IsBuffered |
Obtient une valeur qui indique si la méthode d’écriture peut être appelée plusieurs fois. |
Méthodes
| Nom | Description |
|---|---|
| BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Commence à écrire le contenu du corps pour l’enregistreur de corps avec l’enregistreur, le rappel et l’état spécifiés. |
| CreateBufferedCopy(Int32) |
Crée une copie mise en mémoire tampon du corps. |
| EndWriteBodyContents(IAsyncResult) |
Termine l’écriture du contenu du corps. |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) |
Déclenche un événement lorsque l’enregistreur de corps commence à écrire le contenu du corps avec l’enregistreur, le rappel et l’état spécifiés. |
| OnCreateBufferedCopy(Int32) |
Fournit un point d’extensibilité lorsque le contenu du corps est écrit. |
| OnEndWriteBodyContents(IAsyncResult) |
Déclenche un événement lorsque l’enregistreur de corps termine l’écriture du contenu du corps. |
| OnWriteBodyContents(XmlDictionaryWriter) |
En cas d’implémentation, fournit un point d’extensibilité lorsque le contenu du corps est écrit. |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
| WriteBodyContents(XmlDictionaryWriter) |
Écrit le contenu du corps du message. |