Я попытался следующий код:Не может сериализовать с помощью DataContractSerializer
PolicyProcessRequest.BranchCode = "HeadOff"
PolicyProcessRequest.Policy.BranchCode = "HeadOff"
PolicyProcessRequest.Policy.Risks.Item(0).BranchCode = "HeadOff"
Dim dcs As DataContractSerializer = New DataContractSerializer(GetType(PureMessagingService.PolicyProcessRequestType))
Dim ms As New MemoryStream()
dcs.WriteObject(ms, PolicyProcessRequest)
Am получает следующее исключение при вызове WriteObject
System.Runtime.Serialization.SerializationException был пойман
HResult = -2146233076 Message = Member BranchCode в типе Sirius.SBO.Import.PureMessagingService.BaseRequestType не может быть сериализован. Это исключение обычно вызвано попыткой использовать нулевое значение, когда пустое значение недопустимо.
Члену «BranchCode» установлено значение по умолчанию (обычно это нуль или ноль). Параметр EmitDefault члена «false», указывая, что член не должен быть сериализован.
Однако параметр IsRequired участника является «истинным», что указывает на его сериализацию. Этот конфликт не может быть разрешен. Рассмотрим настройку «BranchCode» на значение, отличное от значения по умолчанию. В качестве альтернативы вы можете изменить свойство EmitDefaultValue атрибута DataMemberAttribute на true или изменить свойство IsRequired на false.
Тем не менее, я установил свойство «BranchCode» для значения без значения по умолчанию во всем запросе.
Public Class BaseNBQuoteRequestType
Private agentCodeField As String
Private branchCodeField As String
Private currencyCodeField As CurrencyType
Private currencyCodeFieldSpecified As Boolean
Private itemField As BasePartyType
Private policyField As BaseQuoteRiskMsgType
Private updatePartyField As Boolean
Public Property AgentCode() As String
Get
Return Me.agentCodeField
End Get
Set(ByVal value As String)
Me.agentCodeField = value
End Set
End Property
Public Property BranchCode() As String
Get
Return Me.branchCodeField
End Get
Set(ByVal value As String)
Me.branchCodeField = value
End Set
End Property
Public Property CurrencyCode() As CurrencyType
Get
Return Me.currencyCodeField
End Get
Set(ByVal value As CurrencyType)
Me.currencyCodeField = value
End Set
End Property
Public Property CurrencyCodeSpecified() As Boolean
Get
Return Me.currencyCodeFieldSpecified
End Get
Set(ByVal value As Boolean)
Me.currencyCodeFieldSpecified = value
End Set
End Property
Public Property Party() As BasePartyType
Get
Return Me.itemField
End Get
Set(ByVal value As BasePartyType)
Me.itemField = value
End Set
End Property
Public Property Policy() As BaseQuoteRiskMsgType
Get
Return Me.policyField
End Get
Set(ByVal value As BaseQuoteRiskMsgType)
Me.policyField = value
End Set
End Property
Public Property UpdateParty() As Boolean
Get
Return Me.updatePartyField
End Get
Set(ByVal value As Boolean)
Me.updatePartyField = value
End Set
End Property
End Class
Вы можете показать нам класс PolicyProcessRequestType? – Cybermaxs
Добавлено определение класса в исходное сообщение. –
it's BaseNBQuoteRequestType class not PolicyProcessRequestType class – Cybermaxs