Создание экземпляра класса DataContract на стороне клиента на стороне клиента в WCF - PullRequest
0 голосов
/ 23 марта 2010

У меня есть пользовательский класс 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

Значение свойства type_of_client равно 6, прежде чем я вызову функцию addCustomer. После того, как он входит в эту функцию, значение равно 0.

ОБНОВЛЕНИЕ: Проблема в создании экземпляра.

Когда я создаю экземпляр класса на стороне клиента, который хранится на стороне обслуживания, некоторые из моих свойств передают 0 или ничего, но когда я вызываю функцию класса обслуживания, он возвращает новый экземпляр этого класса работает нормально.

В чем разница? Может ли это быть проблемой сериализации?

1 Ответ

1 голос
/ 26 марта 2010

Если вы используете параметр порядка в датамбере, он должен начинаться с 0 и увеличиваться (т. Е. Превратить 1 в 0, следующий логин становится 1 и т. Д.).Это может сработать, если у вас более одного члена, но вам некуда поместить вашу переменную, так как для класса, который вы показываете, нет 1 позиции.

...