ServiceBehaviorAttribute.IgnoreExtensionDataObject Propriété

Définition

Obtient ou définit une valeur indiquant si des données de sérialisation inconnues doivent être envoyées sur le réseau.

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

Valeur de propriété

Boolean

true si les données de sérialisation inconnues ne sont jamais envoyées ; sinon false. La valeur par défaut est false.

Exemples

L'exemple suivant illustre l'utilisation de IgnoreExtensionDataObject et une implémentation de IExtensibleDataObject. Dans cet exemple, comme IgnoreExtensionDataObject a la valeur false, les données supplémentaires connues par le client font l'objet d'un aller-retour vers le 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
  }
}

Remarques

Si un type implémente l’interface IExtensibleDataObject , il stocke des données supplémentaires qu’il ne sait pas sur ce réseau lors de la désérialisation dans ce type. Par exemple, si un type Person contient des membres FirstName et LastName et un élément appelé PhoneNumber apparaît, il est stocké. Lors de la sérialisation ultérieure du type, PhoneNumber est mis à nouveau. Le problème est que le schéma pour Person exporté par ce service n’a FirstName que etLastName, par conséquent, Windows Communication Foundation (WCF) génère une instance non valide de schéma! Si la stricte conformité du schéma est primordiale, vous pouvez définir IgnoreExtensionDataObject sur true pour désactiver ce comportement d'émission réitérée.

Quel que soit IgnoreExtensionDataObject le paramètre, WCF traite toujours les données connues (entrantes et sortantes) et ne lève pas d’exceptions lorsque des données supplémentaires entrent. Vous pouvez également définir cette propriété à l’aide de l’élément <dataContractSerializer> dans un fichier de configuration d’application.

S’applique à