ServiceBehaviorAttribute.IgnoreExtensionDataObject ServiceBehaviorAttribute.IgnoreExtensionDataObject ServiceBehaviorAttribute.IgnoreExtensionDataObject ServiceBehaviorAttribute.IgnoreExtensionDataObject Property

定義

不明なシリアル化データをネットワークで送信するかどうかを指定する値を取得または設定します。Gets or sets a value that specifies whether to send unknown serialization data onto the wire.

public:
 property bool IgnoreExtensionDataObject { bool get(); void set(bool value); };
public bool IgnoreExtensionDataObject { get; set; }
member this.IgnoreExtensionDataObject : bool with get, set
Public Property IgnoreExtensionDataObject As Boolean

プロパティ値

不明なシリアル化データが送信されない場合は true、それ以外の場合は falsetrue if unknown serialization data is never sent; otherwise, false. 既定値は、false です。The default is false.

次の例は、IgnoreExtensionDataObject の使用と IExtensibleDataObject の実装を示しています。The following example shows the use of IgnoreExtensionDataObject and an implementation of IExtensibleDataObject. この例では、IgnoreExtensionDataObjectfalse に設定することで、クライアントが認識する追加データがクライアントにそのまま返送 (ラウンドトリップ) されます。In this sample, with IgnoreExtensionDataObject set to false, the extra data that the client knows about is round-tripped back to the client.

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Xml;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace = "http://microsoft.wcf.documentation")]
  public interface ISampleService{
    [OperationContract]
    Person SampleMethod(Person personParam);
  }

  [DataContract(Name="OriginalPerson", Namespace="http://microsoft.wcf.documentation")]
  public class Person : IExtensibleDataObject
  {
    [DataMember]
    public string firstName;
    [DataMember]
    public string lastName;
    [DataMember]
    public string Message;
    [DataMember]
    public XmlNode[] Blob;

    #region IExtensibleDataObject Members
    private ExtensionDataObject data = null;

    public ExtensionDataObject ExtensionData
    {
      get
      {
        return this.data;
      }
      set
      {
        this.data = value;
      }
    }
    #endregion
  }

  [ServiceBehaviorAttribute(
    IgnoreExtensionDataObject=false, 
    ValidateMustUnderstand=false
  )]
  class SampleService : ISampleService
  {
  #region ISampleService Members
    public Person SampleMethod(Person msg)
    {
      Console.WriteLine(msg.firstName);
      Console.WriteLine(msg.lastName);
      Console.WriteLine(msg.Message);

      msg.lastName = "First Name";
      msg.firstName = "Last Name";
      msg.Message = "This is the Reply message.";
 	    return msg;
    }
  #endregion
  }
}

注釈

実装する場合、IExtensibleDataObjectが、ネットワーク経由で逆シリアル化時にその型を認識していない追加データを保存、インターフェイス、します。If a type implements the IExtensibleDataObject interface, it stores any extra data it doesn't know about that comes over the wire when deserializing into that type. たとえば、タイプ Person にメンバー FirstNameLastName があり、PhoneNumber という要素が加わる場合、その要素は保存されます。For example, if a type Person has members FirstName and LastName, and an element called PhoneNumber comes in, it is stored. 後でこのタイプをシリアル化するときに、PhoneNumber が再発行されます。When later serializing the type, PhoneNumber will be re-emitted. 問題なのスキーマはPersonによってサービスのみがエクスポートされたFirstNameLastNameので、Windows Communication Foundation (WCF) には、スキーマが無効なインスタンスが生成されます。The problem is that the schema for Person exported by that service only has FirstName and LastName, so Windows Communication Foundation (WCF) generates a schema-invalid instance! 厳しいスキーマ コンプライアンスが重要な場合は、IgnoreExtensionDataObjecttrue に設定すると、この再発行動作をオフにすることができます。If strict schema compliance is important, you can set IgnoreExtensionDataObject to true to turn this re-emitting behavior off.

関係なくIgnoreExtensionDataObject設定すると、WCF 常に (in および out 両方) 既知のデータを処理し、余分なデータを受信すると、例外をスローしません。Regardless IgnoreExtensionDataObject setting, WCF always processes known data (both in and out) and does not throw exceptions when extra data comes in. 使用してこのプロパティを設定することも、 <dataContractSerializer> アプリケーション構成ファイル内の要素。You can also set this property using the <dataContractSerializer> element in an application configuration file.

適用対象