我开发了一个托管在 IIS 7.5 中的 WCF 服务应用程序,目标是 .NET 3.5,仅配置了一个 basicHttpBinding 端点。OperationContract 签名由一个复合类型组成,其中一个属性是自定义类型。当消费客户端未初始化此属性时,服务上的反序列化程序似乎会忽略该属性,使其为空/无。如果它为空/无,我想初始化这个自定义类型,并且我意识到 WCF 序列化不调用构造函数,所以我使用了反序列化回调。回调执行并初始化类型,但在回调完成后,此属性立即返回 null/nothing。单步执行代码,ExtensionData 属性设置器在回调后立即执行,此时我注意到该属性被重置为空/无。我错过了什么?这是我的示例代码
<DataContract(Name:="Request")> _
Public Class Request
Implements IExtensibleDataObject
<DataMember(Name:="MyCustomType")>
Public MyCustomType As CustomType
Private _ExtensionDataObject As ExtensionDataObject
Public Overridable Property ExtensionData() As ExtensionDataObject Implements IExtensibleDataObject.ExtensionData
Get
Return _ExtensionDataObject
End Get
Set(value As ExtensionDataObject)
_ExtensionDataObject = value
End Set
End Property
<OnDeserializing()>
Sub OnDeserializing(c As StreamingContext)
Me.myCustomType = New CustomType()
End Sub
End Class