У меня есть тип 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.