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

取得或設定進行序列化和還原序列化程序時要使用的 Surrogate。

IgnoreExtensionDataObject

取得或設定值,這個值會指定是否忽略某型別延伸提供的資料 (因此不在資料合約中)。

MaxItemsInObjectGraph

取得或設定物件圖形中要序列化或還原序列化的最大項目數。

SerializationSurrogateProvider

取得或設定進行序列化與還原序列化程序時要使用的 Surrogate 提供者。

方法

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 文件。

適用於

另請參閱