【问题标题】:Marking type with Auto properties produces generated fields as members on the WCF client proxy code使用 Auto 属性标记类型会生成生成的字段作为 WCF 客户端代理代码上的成员
【发布时间】:2011-03-23 23:47:37
【问题描述】:

我有一个 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.Idk__BackingField、person.FirstNamek_BackingField 等,而不是 person.Id 和 person.FirstName。

我应该怎么做才能获得我在 WCF 服务端定义的确切类型?我在 PersonDTO 上使用 Serializable 属性,因为该服务需要与 java 互操作。我正在使用 .NET Framework 4.0、C#、Visual Studio 2010、Win XP SP3。 WCF 服务公开 http 端点并使用 basicHttpBinding。

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

    您是否尝试过使用 DataContact 和 DataMember 属性而不是 Serializable?我相信这仍然会给你一个 Java 可以访问的可序列化对象。

    【讨论】:

    • 是的,关键在于 DataContract 和 DataMember 属性允许您指定名称和其他元数据。见msdn.microsoft.com/en-us/library/…
    • @matrix 如果此解决方案被唤醒,请将答案标记为已接受(赞成/反对投票下的复选框)。谢谢!
    【解决方案2】:

    DataContact 修复了这个问题。但我不确定 DataContract 是否可以与 Java 互操作。我还没有测试这个。但我很确定上述问题是由于 Serializable 属性造成的。看看这个链接。这让我相信 DataContract 应该是可互操作的。

    WCF Data Contracts and "k__BackingField" Property Naming

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      相关资源
      最近更新 更多