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に渡します。 メッセージは、XmlWriterを使用して本文を書き込む必要がある場合は常に、BodyWriterから派生したクラスを呼び出します。

コンストラクター

名前 説明
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)

メッセージ本文の内容を書き出します。

適用対象