BodyWriter Class
Represents the writer of the message body.
Assembly: System.ServiceModel (in System.ServiceModel.dll)
System.ServiceModel.Channels.BodyWriter
System.ServiceModel.Channels.StreamBodyWriter
System.ServiceModel.Security.WSTrustRequestBodyWriter
System.ServiceModel.Security.WSTrustResponseBodyWriter
| Name | Description | |
|---|---|---|
![]() | BodyWriter(Boolean) | Initializes a new instance of the BodyWriter class that explicitly indicates whether to buffer. |
| Name | Description | |
|---|---|---|
![]() | IsBuffered | Gets a value that indicates whether the write method can be called multiple times. |
| Name | Description | |
|---|---|---|
![]() | BeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) | Starts to write body contents for the body writer with specified writer, callback and state. |
![]() | CreateBufferedCopy(Int32) | Creates a buffered copy of the body. |
![]() | EndWriteBodyContents(IAsyncResult) | Ends the writing of body contents. |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | OnBeginWriteBodyContents(XmlDictionaryWriter, AsyncCallback, Object) | Raises an event when the body writer starts to write body contents with specified writer, callback and state. |
![]() | OnCreateBufferedCopy(Int32) | Provides an extensibility point when the body contents are written. |
![]() | OnEndWriteBodyContents(IAsyncResult) | Raises an event when the body writer ends writing body contents. |
![]() | OnWriteBodyContents(XmlDictionaryWriter) | When implemented, provides an extensibility point when the body contents are written. |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
![]() | WriteBodyContents(XmlDictionaryWriter) | Writes out the contents of the message body. |
A message consists of headers and a body. The headers are buffered and the body is streamed. Because the body is streamed, the user cannot pass the actual content of the body to a message. Instead the user must pass a class that knows how to write the body when asked to do so. This is done by passing a class derived from BodyWriter to the Message. A message calls the class derived from BodyWriter whenever it requires the body to be written using an XmlWriter.
The following example shows how to derive a class from BodyWriter. This override takes in an array of strings and writes them to a 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(); } } }
Available since 8
.NET Framework
Available since 3.0
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.


