【问题标题】:Preventing serialization of properties in VB.NET防止 VB.NET 中的属性序列化
【发布时间】:2011-07-19 11:30:55
【问题描述】:

我有一个 VB.NET 类,我通过 XML 在 asmx 文件中对其进行序列化。我已经为我想在序列化中忽略的数据成员添加了属性,但它仍然被返回。我的班级也有<DataContract()> 属性,所有应该序列化的属性都有DataMember 属性。我的财产声明是:

    <ScriptIgnore()> _
    <IgnoreDataMember()> _
    Public Property Address() As SomeObject

【问题讨论】:

    标签: asp.net vb.net web-services serialization asmx


    【解决方案1】:

    通过向支持字段添加属性并将其从自动属性转换,我最终获得了停止序列化的属性:

    <NonSerialized()> _
    Private _address As SomeObject = Nothing
    <ScriptIgnore()> _
    <IgnoreDataMember()> _
    <Xmlignore()>
    Public Property address() As SomeObject
        Get
            Return _address
        End Get
        Set(ByVal value As SomeObject)
            _address = value
        End Set
    End Property
    

    【讨论】:

    • 我认为,您只需要
    • [XmlIgnore] 在我从 asmx 页面返回对象时停止了该字段的序列化。
    【解决方案2】:

    你试过 NonSerialized 属性了吗:

    <NonSerialized()> _
    Public Property Address() As SomeObject
    

    http://msdn.microsoft.com/en-us/library/system.nonserializedattribute.aspx

    【讨论】:

    • 不幸的是,这给出了:属性“NonSerializedAttribute”不能应用于“地址”,因为该属性在此声明类型上无效。
    • 您需要将属性更改为不自动实现以使其工作,并将属性放在后备存储中。我没有意识到情况是这样的。这是一个解释它的问题的链接。 stackoverflow.com/questions/1728367/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 2015-12-27
    相关资源
    最近更新 更多