大家好,我们知道当我们要让一个类可以序列化时,要加上[Serializable]的标记,而且这个标记是不可继承的,小弟有一天忘了加这个标记,竟然可以序列化出来,所以想在这里请教各位大侠,原因何在?
代码如下:namespace TestDemo {
public class A
{
public int xx = 1;
public B b = new B();
}
public class B
{
public ArrayList arr = new ArrayList();
public B()
{
arr.Add("Test");
}
}
class Program {
public static string XmlSerializerToString(object obj)
{
XmlSerializer xs = new XmlSerializer(obj.GetType());
MemoryStream stream = new MemoryStream();
xs.Serialize(stream, obj);
stream.Position = 0;
StreamReader sr = new StreamReader(stream);
string result = sr.ReadToEnd();
sr.Close();
stream.Close();
return result;
}
static void Main(string[] args) {
A a = new A();
string s=XmlSerializerToString(a);
Console.WriteLine(s);
Console.ReadKey();
}
}
}
代码如下:namespace TestDemo {
public class A
{
public int xx = 1;
public B b = new B();
}
public class B
{
public ArrayList arr = new ArrayList();
public B()
{
arr.Add("Test");
}
}
class Program {
public static string XmlSerializerToString(object obj)
{
XmlSerializer xs = new XmlSerializer(obj.GetType());
MemoryStream stream = new MemoryStream();
xs.Serialize(stream, obj);
stream.Position = 0;
StreamReader sr = new StreamReader(stream);
string result = sr.ReadToEnd();
sr.Close();
stream.Close();
return result;
}
static void Main(string[] args) {
A a = new A();
string s=XmlSerializerToString(a);
Console.WriteLine(s);
Console.ReadKey();
}
}
}
解决方案 »
- 请问,这个Fouc委托
- 是不是装了3.5的框架,就可以直接运行2.0的?。。兼容?
- axShockwaveFlash1这个控件问题
- 关于读取Excel表格中有绿色小箭头数据时所出现的问题,急啊,在线等
- 高手请进
- 我开了另外一个线程,需要把当前的主线程挂起,在适当的时候把又把主线程唤醒,应该用什么语句?
- 如何获得一个字符宽度的像素数?
- 如何从一个窗体调用另一个窗体
- oleDbDataAdapter.Update(ds)写数据库不报错,但是数据写不回数据库?
- 麻烦帮我看一下微软的示例代码!
- 用c#,在b/s模式下如何实现绘图功能和打印及预览功能呢? 第二贴,共120份
- 头想歪了,关于机票接口webservice 的问题.请教高人
您的意思是说A中的int 字段能够序列化,但B 字段不行吗?可是我调试的结果是这样:
<?xml version="1.0"?>
<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w
3.org/2001/XMLSchema">
<xx>1</xx>
<b>
<arr>
<anyType xsi:type="xsd:string">Test</anyType>
</arr>
</b>
</A>
但要注意的是序列化对象(类)必须是公共的(public)