BodyWriter クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
メッセージ本文のライターを表します。
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) |
メッセージ本文の内容を書き出します。 |