0

我有我的自定义类 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 或什么都不传递,但是当我调用服务类的函数时,它返回该类的新实例,它可以工作美好的。

有什么区别?这可能是序列化问题吗?

4

1 回答 1

1

如果您使用数据成员的 order 参数必须从 0 开始并递增(即,将 1 变为 0,下一个数据成员变为 1,等等)。如果您有多个成员,这可能会起作用,但是它无处放置您的变量,因为您显示的类没有 1 个位置。

于 2010-03-26T07:43:32.797 回答