在WCF中的客户端创建服务端DataContract类的实例

时间:2010-03-23 09:17:23

标签: wcf createinstance

我的自定义类Customer及其属性。我在类和DataMember上面添加了DataContract标记到属性,它工作正常,但我正在调用服务类的函数,将客户实例作为参数传递,我的一些属性获得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或什么都没有,但是当我调用服务类的函数时,它返回该类的新实例,它工作正常。

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

1 个答案:

答案 0 :(得分:1)