打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MarshalByRefObject和Serializable

MarshalByRefObject和Serializable

最近在看web sevice 方面的东西,顺便看了下序列化,懂了不少啊 :

从MarshalByRefObject派生的类和有[Serializable]的类都可以跨越应用程序域作为参数传递。
从MarshalByRefObject派生的类按引用封送,有[Serializable]标志的类,按值封送。
如果此类即从MarshalByRefObject派生,也有[Serializable]标志也是按引用封送。

序列化有3种情况:

  1. 序列化为XML格式:
    在webservice里,写个web method,传个自定义类做参数,就是这种情况。系统会帮你搞定,把自定义的类转换为默认XML格式。
  2. 序列化为2进制:
    要加[Serializable]标志,可以把私有变量和公共变量都序列化。
  3. 序列化为soap格式:
    需要实现ISerializable接口,定义序列化函数ISerializable.GetObjectData,和还原序列化的构造函数。
    一个soap参数类的sample:
[Serializable]
    
public class serialze:ISerializable 
    
{
        
// 序列化函数,由 SoapFormatter 在序列化过程中调用
        void ISerializable.GetObjectData(SerializationInfo info, StreamingContext
            ctxt)
        
{
            
// 向 SerializationInfo 对象中添加每个字段
            info.AddValue("UserName", UserName);
            info.AddValue(
"UserID",UserID);
        }


        
// 还原序列化构造函数,由 SoapFormatter 在还原序列化过程中调用
        public serialze(SerializationInfo info, StreamingContext ctxt)
        
{
            
// 从 SerializationInfo 对象中还原序列化出各个字段
            UserName = (string)info.GetValue("UserName"typeof(string));
            UserID 
= (int) info.GetValue("UserID",typeof(int));
        }

  
        
public serialze()
        
{}

        
public string UserName;
        
public int UserID;
    }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
在C#中的作用-NET 中的对象序列化
条款25:尽可能将类型实现为可序列化的类型
C# 特性(Attribute)之Serializable特性
谈谈:.Net中的序列化和反序列化
关于Memcached客户端CPU过高问题的排查
java基础
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服