为了账号安全,请及时绑定邮箱和手机立即绑定

即使我使用的是 XmlSerializer,WCF 自动生成的类也是使用字段后缀创建的

即使我使用的是 XmlSerializer,WCF 自动生成的类也是使用字段后缀创建的

C#
斯蒂芬大帝 2022-11-22 16:36:32

我有一个核心服务和一个微服务。微服务引用核心 WCF 服务。当我添加引用时,references.cs包含将我的私有属性公开为公共的类,并且在我的所有属性上都有一个字段后缀


例如:


public string SMCD { get; set; } 成为 private string sMCDField;


以下是我的参考类:


核心接口.cs

[ServiceContract(Namespace = Constants.Namespace, Name = "M3ApiCalls")]

public interface IService

{


    [System.ServiceModel.XmlSerializerFormatAttribute()]

    [OperationContractAttribute(AsyncPattern = true)]

    IAsyncResult BeginCRS100MI_List(string Salesperson, decimal Timestamp, AsyncCallback asyncCallback, object state);

    [System.ServiceModel.XmlSerializerFormatAttribute()]

    CRS100MI_ListResult EndCRS100MI_List(IAsyncResult result);


    ...(more operations)

}

CRS100MI_ListResult.cs

[Serializable()]

[XmlSerializerFormat()]

[XmlRoot(ElementName = "CRS100MI_List",DataType = "System.Xml.XmlElement",Namespace = "http://companynamespace")]

public class CRS100MI_ListResult

{

    [XmlElement(Order = 0)]

    public string Result = "";


    [XmlElement(Order = 1)]

    public List<string> Messages = new List<string>();


    [XmlElement(Order = 2)]

    public List<M3Message> ResultMessage = new List<M3Message>();


    [XmlElement(Order = 3)]

    public List<CRS100MI_ListRecordResult> Record = new List<CRS100MI_ListRecordResult>();


    public CRS100MI_ListResult Parse(List<Dictionary<string, string>> list)

    {

        //parses a list of dictionaries to CRS100MI_ListRecordResult

    }

}


[Serializable()]

[XmlSerializerFormat()]

[XmlRoot(ElementName = "CRS100MI_ListRecord", DataType = "System.Xml.XmlElement", Namespace = "http://companynamespace")]

public class CRS100MI_ListRecordResult

在搜索了一之后,我偶然发现了以下 StackOverflow 问题: Why does WCF sometimes add "Field" to end of generated proxy types?


所以我确保按照给出的说明进行操作,但是在保存、重新添加服务引用并将其添加到 SOAPUI 之后,它仍然向我展示了这个问题。我究竟做错了什么?


查看完整描述

1 回答

?
动漫人物

TA贡献1527条经验 获得超10个赞

仔细查看您的CRS100MI_ListResult.cs内容,我注意到您没有使用DataContractDataMember属性。

使用它们而不是[Serializable()]属性,它应该可以正常工作。


查看完整回答
反对 回复 2022-11-22
  • 1 回答
  • 0 关注
  • 8 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信