オブジェクトをシリアル化した後、空の xmlfile を取得します。私は Monodevelop と Unity 4 を使用しています。私は主にこのコミュニティで非常に長い間検索しましたが、さらに難しい答えを持つ難しい問題しか見つかりませんでした :) 私のものはとてもシンプルだと思います。助けてください。(私はc#が初めてです)シリアル化されたオブジェクトはこれです:
[System.Serializable]
public class information {
private string data1;
private string data2;
private string data3;
public void Data1(string text)
{
data1 = text;
}
public string GetData1 ()
{
return data1;
}
public void Data2(string text)
{
data2 = text;
}
public string GetData2 ()
{
return data2;
}
public void Data3(string text)
{
data3 = text;
}
}
シリアル化クラスはこれです。ここに問題がある可能性があります。
public class SaveXml {
public void SaveData(object obj, string filename)
{
XmlSerializer sr = new XmlSerializer(obj.GetType());
TextWriter writer = new StreamWriter(filename);
sr.Serialize(writer, obj);
writer.Close();
}
public string Load()
{
if(File.Exists("accdata.xml"))
{
XmlSerializer xs = new XmlSerializer(typeof(information));
FileStream read = new FileStream("accdata.xml",FileMode.Open, FileAccess.Read, FileShare.Read);
information info = (information)xs.Deserialize(read);
return info.GetData1();
}
else
{
return "file does not exist";
}
}
そして、シリアル化とシリアル化されたオブジェクトは、次の 2 つのボタンを持つメニューによって呼び出されます。
if(GUI.Button(new Rect(10,50,300,100),"Save"))
{
SaveXml saver = new SaveXml();
information infol = new information();
infol.Data1("textone");
infol.Data2("texttwo");
infol.Data3( "textthree");
saver.SaveData(infol, "accdata.xml");
}
if(GUI.Button(new Rect(500,50,300,100),"Load"))
{
SaveXml saver1 = new SaveXml();
text = saver1.Load();
}
したがって、保存ボタンと読み込みボタンをクリックした後、クラスメニューで宣言されている変数テキストは「textone」である必要があります。Save ボタンは、空のファイルを作成します。
デシリアライゼーションは機能しているようですが、もちろん Information の data1 変数には String がないため、メニューの text という変数も空です。エラーは発生せず、シリアル化後にオブジェクトを操作できます。では、なぜシリアライゼーションが機能しないのですか? 私を助けてください。私の悪い英語と間違いを許してください、私はstackoverflowに慣れていません。