首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SoapFormatter序列化类的选择性属性

使用SoapFormatter序列化类的选择性属性
EN

Stack Overflow用户
提问于 2009-11-30 23:15:33
回答 1查看 1.3K关注 0票数 0

您好,我需要序列化我的类的几个字段

代码语言:javascript
复制
class Foo
{
 Guid value1;
 decimal value2;
 SomeCustomEnum value3;
}

是否可以逐个序列化所有字段:

代码语言:javascript
复制
            MemoryStream ms = new MemoryStream();
            SoapFormatter sf = new SoapFormatter();
            sf.Serialize(ms,value1;
            sf.Serialize(ms, value2);
            sf.Serialize(ms, value3);
            string data = Convert.ToBase64String(ms.ToArray());
            ms.Close();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-01 04:45:26

标记您不想用NonSerialized序列化的字段。这样您就可以跳过第三方字段。

代码语言:javascript
复制
    [Serializable]
    class Foo
    {
        Guid value1;
        decimal value2;
        SomeCustomEnum value3;

        [NonSerialized]
        int Skip = 12;
    }

在关于继承的注释后编辑新示例。您可以手动控制序列化:

代码语言:javascript
复制
class Foo
{
    public Guid value1;
    public decimal value2;
    public SomeCustomEnum value3;
}

[Serializable]
class Bar : Foo, ISerializable
{
    private int a;

    public Bar()
    {
    }

    #region Implementation of ISerializable
    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        info.AddValue("a", a);
        info.AddValue("value1", value1);
        info.AddValue("value2", value2);
    }

    protected Bar(SerializationInfo info,StreamingContext context)
    {
        a = info.GetInt32("a");
        value1 = (Guid)info.GetValue("value1", typeof(Guid));
        value2 = info.GetDecimal("value2");
    }
    #endregion
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1820400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档