Тип маркировки со свойствами Auto создает сгенерированные поля в качестве членов в коде прокси клиента WCF - PullRequest
1 голос
/ 02 августа 2010

У меня есть тип DTO, объявленный следующим образом:

[Serializable]
public class PersonDTO
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

У меня есть служба WCF, контракт работы которой гласит:

[OperationContract]
public PersonDTO GetPerson(int id);

Проблема, с которой я сталкиваюсь, заключается в том, что при использовании этой службы с помощью «Добавить ссылку на службу» wsdl содержит следующее:

<xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/Test.DTO">
−
   <xs:complexType name="PersonDTO">
−
      <xs:sequence>
          <xs:element name="_x003C_Id_x003E_k__BackingField" nillable="true" type="xs:int"/>
          <xs:element name="_x003C_FirstName_x003E_k__BackingField" nillable="true" type="xs:string"/>
          <xs:element name="_x003C_LastName_x003E_k__BackingField" nillable="true" type="xs:string"/>
      </xs:sequence>
   </xs:complexType>
   <xs:element name="IVQueueDTO" nillable="true" type="tns:IVQueueDTO"/>
</xs:schema>

Когда я пытаюсь сослаться на клиента WCF, вместо того, чтобы получить person.Id и person.FirstName, я получаю person.Idk__BackingField, person.FirstNamek_BackingField и т. Д.

Что я должен сделать, чтобы получить точный тип, который я определил на стороне службы WCF? Я использую атрибут Serializable на PersonDTO, потому что этот сервис должен быть совместим с Java. Я использую .NET Framework 4.0, C #, Visual Studio 2010, Win XP SP3. Служба WCF предоставляет конечную точку http и использует basicHttpBinding.

Ответы [ 2 ]

2 голосов
/ 02 августа 2010

Вы пытались использовать атрибуты DataContact и DataMember вместо Serializable?Я верю, что это все еще даст вам сериализуемый объект, к которому может получить доступ Java.

0 голосов
/ 02 августа 2010

DataContact решает эту проблему.Но я не уверен, что DataContract совместим с Java.Мне еще предстоит это проверить.Но я уверен, что проблема, описанная выше, связана с атрибутом Serializable.Проверьте эту ссылку.Это заставляет меня поверить, что DataContract должен быть совместимым.

Контракты данных WCF и именование свойств "k__BackingField"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...