public interface ITest
{
} public class C1 : ITest
{
public C1()
{}
}
public class Parameter22
{
public Parameter22()
{ }
public int k0 = 0;
public C1 k1 = new C1();
public ITest k2 = new C1(); }序列化测试代码
Parameter22 ob = new Parameter22();
Type ty = typeof(Parameter22);
XmlSerializer serializer = new XmlSerializer(ty);
string filename = "d:\\test.xml";
TextWriter tw = new StreamWriter(filename);
XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces();
xmlns.Add(string.Empty, string.Empty);
serializer.Serialize(tw, ob, xmlns);
tw.Close();错误信息是k2类型不能被序列化请高手指点 ,在线等
解决方案 »
- Wpf 主窗口随子窗口最小化
- 关于 赛道分组的问题!
- 有关替换转义符的问题,在线等!!!!!!
- 请问我想把一个表(A)的基中满足条件的数据放在另一表(B)(根据A生成的一样的结构)中,怎么做呀
- 新手问 关于winform中的DataGrid的应用问题?
- Notyfyicon 实现最小化到托盘
- asp.net 读取doc文件
- 想在一个二进制文件中查找特定的字符串并进行替换,用哪种方式
- 一个.net framework 类库的疑问
- 求助:采用File.Exists判断文件存在 文件夹目录下却没有该文件
- 刚开始学。net的 c#,请教如何将windows应用程序的项目,编译为exe文件
- winform如何调用控制台应用程序并传参
{
public C1()
{}
}类上面加上[Serializer]
最终结果为:[Serializer]//指示编译器此类可以被序列化
public class C1 : ITest
{
public C1()
{}
}
[Serializable]
public class C1 : ITest
{
public C1()
{ }
}早就试过了,不好用的
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.IO;
using System.Xml;
namespace ConsoleApplication1
{
public interface ITest
{ }
public class C1 : ITest
{
public C1()
{ }
public override string ToString()
{
return "";
}
} public class Parameter22:IXmlSerializable
{
public Parameter22()
{ }
public int k0 = 0;
public C1 k1 = new C1();
public ITest k2 = new C1(); public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}
public void ReadXml(XmlReader reader)
{ }
public void WriteXml(XmlWriter writer)
{
writer.WriteElementString("k0", k0.ToString());
writer.WriteElementString("k1", k1.ToString());
writer.WriteElementString("k2", k2.ToString());
}
}
class Program
{
static void Main(string[] args)
{
Parameter22 ob = new Parameter22();
Type ty = typeof(Parameter22);
XmlSerializer serializer = new XmlSerializer(ty);
string filename = "d:\\test.xml";
TextWriter tw = new StreamWriter(filename);
XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces();
xmlns.Add(string.Empty, string.Empty);
serializer.Serialize(tw, ob, xmlns);
tw.Close();
}
}
}
<Parameter22>
<k0>0</k0>
<k1 />
<k2 />
</Parameter22>
自己实现的话,一个一个自定义输出,那会死人吧
{
public Parameter22()
{ }
public int k0 = 0;
public C1 k1 = new C1();
public C1 k2 = new C1(); }
不明白为什么接口不可以,而抽象类却可以。由于类里面的几个项目的类型是不确定,我最开始是用object类型来实现的,
序列化也没什么问题。不过由于还是感觉不太正规,毕竟是正式的项目,
所以准备用接口,哪知道ms竟然不支持,查了msdn,他也没有说不支持接口呀
接口。
看来只能废掉接口了。道理来讲,抽象类也只是相当于一个协议。
object那就更啥也说不上了。为啥呢
你可以用XmlIgnore忽略掉或者你就改成抽象类