DataContractSerializerOperationBehavior 类

定义

表示 DataContractSerializer的运行时行为。

public ref class DataContractSerializerOperationBehavior : System::ServiceModel::Description::IOperationBehavior
public ref class DataContractSerializerOperationBehavior : System::ServiceModel::Description::IOperationBehavior, System::ServiceModel::Description::IWsdlExportExtension
public class DataContractSerializerOperationBehavior : System.ServiceModel.Description.IOperationBehavior
public class DataContractSerializerOperationBehavior : System.ServiceModel.Description.IOperationBehavior, System.ServiceModel.Description.IWsdlExportExtension
type DataContractSerializerOperationBehavior = class
    interface IOperationBehavior
type DataContractSerializerOperationBehavior = class
    interface IOperationBehavior
    interface IWsdlExportExtension
Public Class DataContractSerializerOperationBehavior
Implements IOperationBehavior
Public Class DataContractSerializerOperationBehavior
Implements IOperationBehavior, IWsdlExportExtension
继承
DataContractSerializerOperationBehavior
实现

示例

下面的示例在某操作的行为集合中查找 DataContractSerializerOperationBehavior,并重置 MaxItemsInObjectGraphIgnoreExtensionDataObject 属性。

private void DataContractBehavior()
{
    WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
    Uri baseAddress = new Uri("http://localhost:1066/calculator");
    ServiceHost sh = new ServiceHost(typeof(Calculator), baseAddress);
    sh.AddServiceEndpoint(typeof(ICalculator), b, "");

    // Find the ContractDescription of the operation to find.
    ContractDescription cd = sh.Description.Endpoints[0].Contract;
    OperationDescription myOperationDescription = cd.Operations.Find("Add");

    // Find the serializer behavior.
    DataContractSerializerOperationBehavior serializerBehavior =
        myOperationDescription.Behaviors.
           Find<DataContractSerializerOperationBehavior>();

    // If the serializer is not found, create one and add it.
    if (serializerBehavior == null)
    {
        serializerBehavior = new DataContractSerializerOperationBehavior(myOperationDescription);
        myOperationDescription.Behaviors.Add(serializerBehavior);
    }

    // Change the settings of the behavior.
    serializerBehavior.MaxItemsInObjectGraph = 10000;
    serializerBehavior.IgnoreExtensionDataObject = true;

    sh.Open();
    Console.WriteLine("Listening");
    Console.ReadLine();
}
Private Sub DataContractBehavior() 
    Dim b As New WSHttpBinding(SecurityMode.Message)
    Dim baseAddress As New Uri("http://localhost:1066/calculator")
    Dim sh As New ServiceHost(GetType(Calculator), baseAddress)
    sh.AddServiceEndpoint(GetType(ICalculator), b, "")
    
    ' Find the ContractDescription of the operation to find.
    Dim cd As ContractDescription = sh.Description.Endpoints(0).Contract
    Dim myOperationDescription As OperationDescription = cd.Operations.Find("Add")
    
    ' Find the serializer behavior.
    Dim serializerBehavior As DataContractSerializerOperationBehavior = _
    myOperationDescription.Behaviors.Find _
    (Of DataContractSerializerOperationBehavior)()
    
    ' If the serializer is not found, create one and add it.
    If serializerBehavior Is Nothing Then
        serializerBehavior = New DataContractSerializerOperationBehavior(myOperationDescription)
        myOperationDescription.Behaviors.Add(serializerBehavior)
    End If
    
    ' Change settings of the behavior.
    serializerBehavior.MaxItemsInObjectGraph = 10000
    serializerBehavior.IgnoreExtensionDataObject = True
    
    sh.Open()
    Console.WriteLine("Listening")
    Console.ReadLine()

End Sub

注解

DataContractSerializerOperationBehavior 支持控制 DataContractSerializer 选项,例如 MaxItemsInObjectGraphIgnoreExtensionDataObject 属性。 其中的一些属性只能使用类的构造函数设置。 在这种情况下, DataContractSerializer 可以使用 方法替换 CreateSerializer 。 有关数据协定的详细信息,请参阅使用数据协定

有关使用 DataContractSerializerOperationBehavior 替换 IDataContractSurrogate 属性返回 DataContractSurrogate 的 的详细信息,请参阅 数据协定代理

构造函数

DataContractSerializerOperationBehavior(OperationDescription)

使用指定的操作说明初始化 DataContractSerializerOperationBehavior 类的新实例。

DataContractSerializerOperationBehavior(OperationDescription, DataContractFormatAttribute)

使用指定的操作说明和数据协定格式初始化 DataContractSerializerOperationBehavior 类的新实例。

属性

DataContractFormatAttribute

获取与操作关联的 DataContractFormatAttribute

DataContractResolver

获取或设置 DataContractResolver 的实现,用于在序列化和反序列化过程中动态映射类型。

DataContractSurrogate

获取或设置要在序列化和反序列化过程中使用的代理项。

IgnoreExtensionDataObject

获取或设置一个值,该值指定是否忽略由某类型(因此不是数据协定类型)的扩展提供的数据。

MaxItemsInObjectGraph

获取或设置对象图中要序列化或反序列化的最大项数。

SerializationSurrogateProvider

获取或设置要在序列化和反序列化过程中使用的代理项提供程序。

方法

CreateSerializer(Type, String, String, IList<Type>)

创建类的一个实例,该类从序列化和反序列化过程的 XmlObjectSerializer 中继承。

CreateSerializer(Type, XmlDictionaryString, XmlDictionaryString, IList<Type>)

创建类的一个实例,该类从序列化和反序列化过程(其 XmlObjectSerializer 包含命名空间)的 XmlDictionaryString 中继承。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

显式接口实现

IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection)

将参数集合添加到行为。

IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation)

将客户端行为附加到操作。

IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation)

将行为应用于操作。

IOperationBehavior.Validate(OperationDescription)

验证操作。

IWsdlExportExtension.ExportContract(WsdlExporter, WsdlContractConversionContext)

导出操作的 WSDL 表示形式。

IWsdlExportExtension.ExportEndpoint(WsdlExporter, WsdlEndpointConversionContext)

以 WSDL 文档形式导出终结点说明。

适用于

另请参阅