私はxamarinフォームプロジェクトでplayerというオブジェクトをシリアル化および逆シリアル化しようとしています。 とプレイヤーがどのように見えるのthats:私はオブジェクトをシリアライズし、デシリアライズするには、Androidプロジェクトでこれらのメソッドを使用xamarinフォームからオブジェクトを逆シリアル化できません
public class Player
{
//stores weather the player ended his turn
public bool turnOver = false;
//the name of the player
public string name { get; set; }
//total score of the player
public long score { get; set; }
//coins to buy abillities
public int coins { get; set; }
//array that stores for each ability how much uses left
public int[] abilities = { 2, 2, 2, 2 };
//the levels the player have completed
public List<long> completedLevels;
//player constructor that initializes all the data for initial use
public Player()
{
this.name = "";
score = 0;
coins = 100;
completedLevels = new List<long>();
}
}
。私は例外を取得デシリアライズしようとしたとき
public void Serialize<T>(Player list)
{
//Creating XmlSerializer.
XmlSerializer serializer = new XmlSerializer(typeof(T));
var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var filePath = Path.Combine(documentsPath, "data1.xml");
var file = File.Open(filePath, FileMode.OpenOrCreate, FileAccess.Write);
var strm = new StreamWriter(file);
//Convert the XML to List
serializer.Serialize(strm, list);
strm.Close();
}
public T GenericDeSerialize<T>()
{
//Creating XmlSerializer for the object
XmlSerializer serializer = new XmlSerializer(typeof(T));
var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var filePath = Path.Combine(documentsPath, "data1.xml");
var file = File.Open(filePath, FileMode.OpenOrCreate, FileAccess.Read);
var strm = new StreamReader(file);
string text = strm.ReadToEnd();
//Deserialize back to object from XML
T b = (T)serializer.Deserialize(strm);
strm.Close();
return b;
}
今シリアル化部分はうまく行くが:
Root element is missing
私は、生成されたXMLを見ていたし、それがそのようになっています
<?xml version="1.0" encoding="utf-8"?>
<Player xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<turnOver>false</turnOver>
<abilities>
<int>2</int>
<int>2</int>
<int>2</int>
<int>2</int>
</abilities>
<completedLevels />
<name />
<score>0</score>
<coins>500</coins>
</Player>
私はこの問題を見つけることができません誰もxmlserializerが何かを書いている可能性があり、それを読むことができなかった理由を指摘できますか? ありがとう
編集: シリアライザは、2つの機能を持つクラスです。シリアル化中に
Serializer ser = new Serializer();
Player p = new Player();
p.coins = 500;
ser.Serialize<Player>(p);
ser.GenericDeSerialize<Player>();
私はちょうど今この愚かな間違いに気づいたが、私はそれを修正後同じエラーが発生します:/ –
私はこの感謝を修正するために投稿を編集:) –
テンプレートパラメータを表示するこれらの汎用関数を呼び出すコードを含めてください。 – DavidS