我是XMLSerialization的新手,并且没有人会帮助我解决它,所以这里是我想要的XMLSerialize/Deserialize的代码的一部分,并且是一个错误本身。C#XMLSerialization错误,System.InvalidOperationException
我有三类:
public class Contacts
{
public string country;
public string city;
public string street;
public int houseNumber;
public int flatNumber;
public int phoneNumber;
public Contacts(){...};
public Contacts(string cntry, string city, string str, int houseNum, int flatNum, int phoneNum){...};
public override string ToString(){...};
}
public class SimpleHuman
{
public string firstName;
public string lastName;
public int age;
public string sex;
public Contacts contacts;
public SimpleHuman(){...};
public SimpleHuman(string fn, string ln, int a, string s, Contacts c){...};
public override string ToString(){...};
}
public class doctor : SimpleHuman
{
public DateTime contractExpirationDate;
public int idNumber;
public List<int> doctorPatients;
public doctor(){...};
public doctor(string name, string surname, int age, string sex, int doctorID, Contacts c):base(name, surname, age, sex, c){...};
public override string ToString(){...};
}
的问题是,当我试图序列类“医生”与XML文件:
XmlSerializer SerializerDoc = new XmlSerializer(typeof(doctor));
foreach(doctor d in doctorList)
{
TextWriter WriteFileStream = new StreamWriter("doctors/" + d.firstName + d.lastName + ".xml");
SerializerDoc.Serialize(WriteFileStream, d);
WriteFileStream.Close();
}
我得到的线这个错误与创建一个TextWriter(从russina下面的翻译):
“不正确的操作系统:System.InvalidOperation例外情况: Clinic.doctor不需要任何服务。 Возможнаобработка толькообщихтипов。 в System.Xml.Serialization.TypeDesc.CheckSupported()в System.Xml.Serialization.TypeScope.GetTypeDesc(类型类型,的MemberInfo 源,布尔directReference,布尔throwOnError)в System.Xml.Serialization.ModelScope.GetTypeModel(型类型,布尔 directR eference)в System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(类型 类型,XmlRootAttribute根,字符串defaultNamespace)в System.Xml.Serialization.XmlSerializer..ctor(型型,字符串 defaultNames步伐) System.Xml.Serialization.XmlSerializer..ctor(Type type) Clinic.Clinic.saveDoctorInfo() d:\ Dropbox \ CSharpHomeWork \ ExamTask \ Cl Clinic.Clinic.launchMenu() d:\ Dropbox \ CSharpHomeWork \ ExamTask \ Clinic \ Prog ram.cs:строка463в Clinic.Program.Main(String [] args) d:\ Dropbox \ CSharpHomeWork \ ExamTask \ Cli nic \ Program.cs:строка870按 任意键继续。 。 “
我WIN7的俄语版本,因此对俄罗斯的消息告诉是这样的:” Unhandeled异常:.......:Clinic.doctor不可用,因为保护它的水平。 “ 翻译的几乎文字,所以请记住,
希望有人会帮助我,因为我可以用简单的”XML编写器“编写类”医生“,但仍然没有任何意义( 。因为我认为),据我可以用一条线将其保存,而不是20
谢谢你们
UPADTE:只是做了所有的类 - 大众现在我得到错误的字符串: TextWriter WriteFileStream = new StreamWriter(“doctors /”+ d.firstName + d.lastName +“.xml”);
It sais like:
未处理的异常:System.IO.DirectoryNotFoundException:无法找到路径的一部分 “d:\ Dropbox的\ CSharpHomeWork \ ExamTask \诊所\ BIN \调试\医生\安德斯 onNeo.xml”。
路径是100%正确的。我只是觉得不是创建一个文件,而是试图在已经存在的文件中写一些东西。
顺便说一句,抱歉,我不能以声誉感谢你,因为我现在不能那样做。但现在我的“口头感谢”:)
谢谢,完成。但是现在我对同一个代码串有一个新问题。它似乎没有找到指定的路径。即使这条道路是100%正确的。 – Kamilius 2013-03-23 13:17:28
医生\目录是否已经存在? StreamWriter不会为您创建目录。 – 2013-03-23 13:48:09
是的,我创建它manualy。 – Kamilius 2013-03-23 14:16:13