一个类如果没有标识[Serializable],那此类是不能被序列化的,那请问,类里面的某个成员可以被序列化吗?

解决方案 »

  1.   

    一个类如果标识[Serializable],类里面的成员(字段)也会被序列化,除非该成员(字段)标识为[NOnSerializable]
    http://msdn.microsoft.com/zh-cn/library/vstudio/ms233843.aspx
      

  2.   

    XmlSerializer, DataContractSerialier 现在都可以不用加 [Serializable] 进行序列化
    public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }        private void Button_Click_1(object sender, RoutedEventArgs e)
            {
                var test = new Test { Name = "fx" };
                var result = "";
                var result1 = "";
                using (var ms = new MemoryStream())
                {
                    var ser = new DataContractSerializer(typeof(Test));
                    ser.WriteObject(ms, test);
                    ms.Position = 0;
                    using (var sr = new StreamReader(ms))
                    {
                        result = sr.ReadToEnd();
                    }
                }            using (var ms = new MemoryStream())
                {
                    var ser = new XmlSerializer(typeof(Test));
                    ser.Serialize(ms, test);
                    ms.Position = 0;
                    using (var sr = new StreamReader(ms))
                    {
                        result1 = sr.ReadToEnd();
                    }
                }
                MessageBox.Show(result + "\n" + result1);           
            }
        }    public class Test
        {
            public string Name { get; set; }
        }
      

  3.   

    当然可以
    首先,你要明白什么叫序列化:百度的解释:将对象的状态信息转换为可以存储或传输的形式的过程
    也就是说,转成能传输的格式就叫序列化
    比如说要传输下面的类,会有很多种方法的
        public class TestClass
        {
            public Int32 i;
            public String s;
        }把TestClass类转成一个Byte[]就能传输了
    这也算序列化
      

  4.   

    标识了 XmlRoot 等特性也可以对其操作序列化,只不过结果是XML