1つのXMLファイルに複数のオブジェクトを保存して読み込もうとしています。オブジェクトリストの削除/シリアル化
シリアライズ機能は既存のリストとは機能しませんが、その理由はわかりません。私はすでにそれをコンパイルしようとしましたが、メソッドにオブジェクトのレフェレンスが必要であるというエラーが表示されます。
のProgram.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);
}
}
Cocktail.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;
}
}
}
Iiはまた、私はDiserializeFuncで何かを台無しだと思います()。
シリアル化エラーが発生した場合は、それを投稿すると役に立ちます。また、[try catchの内部エラー](https://stackoverflow.com/questions/22826067/what-is-inner-exception)を分析することで、エラーを試してみることをお勧めします。 [このリストのシリアライズに関するチュートリアル](https://www.dotnetperls.com/serialize-list)に従うこともできます –
問題は何ですか?あなたはポストに言及していません –
サイドノート:「新しいここ」、「ありがとう」、「私はボブ・ザ・サード」(または他の署名)のような問題とは無関係のテキストを避けてください。代わりに、ポストに提供されているコードが[MCVE]のガイドラインと、投稿にある入力/出力/エラーメッセージのようなすべての必要な情報に従っていることを確認してください。 –