我有我的自定义类 Customer 及其属性。我在类上方添加了 DataContract 标记,并将 DataMember 添加到属性,它工作正常,但我正在调用服务类的函数,将客户实例作为参数传递,我的一些属性得到 0 值。
在调试时,我可以看到我的属性值,在它到达函数后,一些属性的值为 0。为什么会这样?
这两个动作之间没有代码。DataContract 标记工作正常,一切正常。关于这个问题有什么建议吗?
我试图将 ByRef 更改为 ByVal,但它并没有改变任何东西。为什么它会正确传递其他值而某些整数类型只是 0?
也许答案很简单,但我想不通。
谢谢你。
<DataContract()>
Public Class Customer
Private Type_of_clientField As Integer = -1
<DataMember(Order:=1)>
Public Property type_of_client() As Integer
Get
Return Type_of_clientField
End Get
Set(ByVal value As Integer)
Type_of_clientField = value
End Set
End Property
End Class
<ServiceContract(SessionMode:=SessionMode.Allowed)>
<DataContractFormat()>
Public Interface CustomerService
<OperationContract()>
Function addCustomer(ByRef customer As Customer) As Long
End Interface
在我调用 addCustomer 函数之前,type_of_client 属性值为 6。进入该函数后,值为0。
更新:问题在于实例创建。
当我在客户端创建一个存储在服务端的类的实例时,我的一些属性传递 0 或什么都不传递,但是当我调用服务类的函数时,它返回该类的新实例,它可以工作美好的。
有什么区别?这可能是序列化问题吗?