【发布时间】:2017-03-10 06:17:40
【问题描述】:
我尝试在一个 XML 文件中保存和读取多个对象。
函数序列化不适用于我现有的列表,但我不知道为什么。我已经尝试编译它,但我得到一个错误,说该方法需要一个对象引用。
程序.cs:
class Program
{
static void Main(string[] args)
{
List<Cocktail> lstCocktails = new List<Cocktail>();
listCocktails.AddRange(new Cocktail[]
{
new Cocktail(1,"Test",true,true,
new Cocktail(1, "Test4", true, true, 0)
});
Serialize(lstCocktails);
}
public void Serialize(List<Cocktail> list)
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Cocktail>));
using (TextWriter writer = new StreamWriter(@"C:\Users\user\Desktop\MapSample\bin\Debug\ListCocktail.xml"))
{
serializer.Serialize(writer, list);
}
}
private void DiserializeFunc()
{
var myDeserializer = new XmlSerializer(typeof(List<Cocktail>));
using (var myFileStream = new FileStream(@"C:\Users\user\Desktop\MapSample\bin\Debug\ListCocktail.xml", FileMode.Open))
{
ListCocktails = (List<Cocktail>)myDeserializer.Deserialize(myFileStream);
}
}
鸡尾酒.cs:
[Serializable()]
[XmlRoot("locations")]
public class Cocktail
{
[XmlElement("id")]
public int CocktailID { get; set; }
[XmlElement("name")]
public string CocktailName { get; set; }
[XmlElement("alc")]
public bool alcohol { get; set; }
[XmlElement("visible")]
public bool is_visible { get; set; }
[XmlElement("counter")]
public int counter { get; set; }
private XmlSerializer ser;
public Cocktail() {
ser = new XmlSerializer(this.GetType());
}
public Cocktail(int id, string name, bool alc,bool vis,int count)
{
this.CocktailID = id;
this.CocktailName = name;
this.alcohol = alc;
this.is_visible = vis;
this.counter = count;
}
}
}
我还认为我把 DiserializeFunc() 搞砸了。
【问题讨论】:
-
如果您可以发布您收到的序列化错误,这将有所帮助。通过分析inner errors in a try catch 来尝试理解错误也是明智的。也可以尝试关注this tutorial on list serialization
-
现在有什么问题?你没有在帖子里提到
-
旁注:请避免使用与问题无关的文字,例如“新来的”、“谢谢”、“我是 Bob the Third”(或任何其他签名)。相反,请确保帖子中提供的代码遵循minimal reproducible example 准则以及帖子中存在的所有必要信息,例如输入/输出/错误消息。
标签: c# xml serialization deserialization