Я разработал приложение службы WCF, размещенное в IIS 7.5 и предназначенное для .NET 3.5, настроенное только с конечной точкой basicHttpBinding. Сигнатура OperationContract состоит из составного типа, где одно из его свойств является настраиваемым типом. Когда это свойство не инициализируется потребляющим клиентом, десериализатор в службе, похоже, игнорирует свойство, оставляя его пустым / пустым. Я хотел бы инициализировать этот пользовательский тип, если он равен нулю / ничего, и я понимаю, что сериализация WCF не вызывает конструкторов, поэтому я использовал обратный вызов десериализации. Обратный вызов выполняет и инициализирует тип, но сразу после завершения обратного вызова это свойство возвращается к нулю / ничего. Шагая по коду, установщик свойства 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