Partage via


ServiceBehaviorAttribute.IgnoreExtensionDataObject Propriété

Définition

Obtient ou définit une valeur qui spécifie s’il faut envoyer des données de sérialisation inconnues sur le câble.

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é

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 montre l’utilisation et IgnoreExtensionDataObject l’implémentation de IExtensibleDataObject. Dans cet exemple, avec IgnoreExtensionDataObject la valeur falsedéfinie sur , les données supplémentaires que le client sait sur est aller-retour au 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 toutes les données supplémentaires qu’il ne sait pas sur le fil lors de la désérialisation dans ce type. Par exemple, si un type Person a des membres FirstName et LastNamequ’un élément appelé PhoneNumber entre en jeu, il est stocké. Lors de la sérialisation ultérieure du type, PhoneNumber elle est recréé. Le problème est que le schéma pour Person exporté par ce service a FirstName uniquement et LastName, par conséquent, Windows Communication Foundation (WCF) génère une instance non valide de schéma ! Si la conformité stricte du schéma est importante, vous pouvez définir IgnoreExtensionDataObject pour true désactiver ce comportement de réémission.

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 sont entrantes. Vous pouvez également définir cette propriété à l’aide de l’élément <dataContractSerializer> dans un fichier de configuration d’application.

S’applique à