【发布时间】:2020-05-06 11:51:35
【问题描述】:
我已将我的数据合约标记为可序列化,下面附上我的示例代码:
Imports System
Imports System.Runtime.Serialization
Imports System.Xml
Imports System.Xml.Serialization
<DataContract()>
<Serializable()>
Public Class USR_USER_CONTRACT
<DataMember()>
Public Property USR_USERID() As Global.System.String
<DataMember()>
Public Property USR_LOGINID() As Global.System.String
End Class
创建 WCF 代理类后,我的数据合同未标记为可序列化,如下所示:
<System.Diagnostics.DebuggerStepThroughAttribute(),
System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"),
System.Runtime.Serialization.DataContractAttribute(Name:="USR_USER_CONTRACT", [Namespace]:="http://schemas.datacontract.org/2004/07/Ebix.Evolution.EntityContract")>
Partial Public Class USR_USER_CONTRACT
Inherits Object
Implements System.Runtime.Serialization.IExtensibleDataObject
Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
Private CLM_BUDGETTIMEField As System.Nullable(Of Short)
Private PropertyUSR_DEFAULTASSFILESField As String
请帮忙。
谢谢
【问题讨论】:
-
为什么需要将其标记为可序列化?
-
@tomredfern 因为我们需要实现 out proc session 模式,根据建议,在将 object 分配给 out proc session 类型时,对象应该是序列化形式。
-
如果一个类型是可序列化的,并不是因为使用了Serializable属性来装饰类型,而是因为该类型天生就是可序列化的。如果您的类型本质上是可序列化的,那么您不需要使用 Serializable 属性。
标签: vb.net wcf wcf-data-services datacontractserializer datacontract