次の方法で共有


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)

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

適用対象