【问题标题】:How can I ignore a property from being serialized in auto generated WSDL?如何忽略在自动生成的 WSDL 中序列化的属性?
【发布时间】:2016-06-01 19:35:43
【问题描述】:

我有一个 Web 服务,并且在我的类中使用服务器时需要一个附加属性,但我不希望在客户端上看到这个属性(不在 WSDL 中序列化)。我试过[XMLIgnore],但没用。我还在课堂上添加了[Serializable],在这种情况下,该属性以不同的名称_x003C_MyPublicField_x003E_k__BackingField1 进行了序列化。有没有办法在不编写我自己的序列化程序的情况下做到这一点?

提前致谢。

附:我也试过这个Omit Properties from WebControl Serialization,但没有运气。

【问题讨论】:

  • 你试过[NonSerialized] 吗? msdn.microsoft.com/en-us/library/…
  • 财产必须是公开的吗?将其设置为私有或受保护会解决问题吗?
  • @Kritner 我用它玩了一点,它终于奏效了。谢谢!

标签: c# web-services xml-serialization


【解决方案1】:

您可以使用[NonSerialized] 属性来防止类属性被序列化。见:https://msdn.microsoft.com/en-us/library/system.nonserializedattribute(v=vs.110).aspx

[Serializable]
public class MyClass
{
    public int MySerializedProperty { get; set; }

    [NonSerialized]
    public string MyNonSerializedProperty { get; set; }
}

【讨论】:

  • MyClass 应该用[Serializable] 装饰。
【解决方案2】:

您是否尝试删除 [DataMember] 属性?

【讨论】:

  • 没有数据成员属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 2016-08-27
  • 2018-12-12
  • 2016-02-03
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多