首页 新闻 会员 周边

请问一下.Net可以序列化的类必须是实体类麽?一个内存操作的静态类可以被序列化写到文件存储吗?

0
悬赏园豆:80 [已解决问题] 解决于 2014-04-09 12:46

一个内存操作静态类可以被序列化写到文件存储吗?

royalwong_real的主页 royalwong_real | 初学一级 | 园豆:136
提问于:2014-04-08 15:20
< >
分享
最佳答案
1

LZ理解什么是序列化吗?序列化是指将数据转换成字节流的形式便于在不同介质或者在网络中传递,因此包含了数据的实体类是可以被序列化的。

而静态类只是封装了一系列操作,本身并不包含用于传递的数据。因此既不可能也没有必要序列化静态类。

收获园豆:10
飞鸟_Asuka | 菜鸟二级 |园豆:209 | 2014-04-09 10:12
其他回答(4)
1

默认情况下,静态类无法被序列化,因为无法实例化对象;类的静态属性无法序列化,因为静态属性属于类而非具体实例

收获园豆:20
苗 ︶ㄣ | 园豆:289 (菜鸟二级) | 2014-04-08 17:20

那么一个功能类呢?能被序列化吗?

支持(0) 反对(0) royalwong_real | 园豆:136 (初学一级) | 2014-04-09 08:32
1

ISerilizable

收获园豆:10
唐大侠 | 园豆:400 (菜鸟二级) | 2014-04-09 09:02
1

一个类要能序列化,必须在类名前加上标志:

[Serializable]
public class AccountModel

{  

        public int Id { get; set; }
        public string Account { get; set; }
        public string Password { get; set; }

}

由于静态类无法实例化,所以得到类型的变量,那么就不能序列化或反序列化变量了。

Serialize.AccountModel model = new Serialize.AccountModel
            {
                Id = 1,
                Account = "administrator",
                Password = "123456"
            };

            string text = Serialize.SerializHelper<Serialize.AccountModel>.Instance.Serialize(model);
            Console.WriteLine("text:"+text+"\r\nLength:"+text.Length.ToString());

            model = Serialize.SerializHelper<Serialize.AccountModel>.Instance.Desrialize(text);
            if (model != null)
                Console.WriteLine("Account:" + model.Account+",Password:"+model.Password);

 

不过楼主可以尝试创建一个实体类,并添加你想要的属性,将静态类中的属性赋给实体类的属性,最后再进行序列化或反序列化实体类。

收获园豆:30
king2003 | 园豆:161 (初学一级) | 2014-04-09 11:23
1

本身序列化一个类这个想法就是错的.

需要序列化和反序列化的是对象而不是类.

静态类是没有对象的也就谈不上序列化,

静态的东西要传输和储存直接赋值就行了.因为只有一个

收获园豆:10
吴瑞祥 | 园豆:29449 (高人七级) | 2014-04-09 12:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册