Update.
La mia IA e' effettivamente un estensione di un noto tool di supporto al gioco di Hearthstone.
Uno delle cose che devo aggiungere atm e' logging delle quest (quali attive, quali complete ecc), che sto aggiungendo, ma ho un problema con l'esportare in XML. Il tool e' in C# che io di fatto non so, quindi vado un po' a naso ma qui non capisco il problema onestamente.
Quello che devo salvare e' la mia classe QuestStats:
public class QuestStats
{
private const string FileName = "QuestsLog.xml";
private static Lazy<QuestStats> _instance = new Lazy<QuestStats>(Load);
[XmlArray(ElementName = "CurrentQuests")]
[XmlArrayItem(ElementName = "Quest")]
private List<QuestInfo> _currentQuests;
[XmlArray(ElementName = "CompletedQuests")]
[XmlArrayItem(ElementName = "Quest")]
private List<QuestInfo> _completedQuests;
private QuestStats()
{
_currentQuests = new List<QuestInfo>();
_completedQuests = new List<QuestInfo>();
}
public static QuestStats Instance => _instance.Value;
private static string FilePath => Path.Combine(Config.AppDataPath, FileName);
private static QuestStats Load()
{
QuestStats instance;
if (!File.Exists(FilePath))
{
instance = new QuestStats();
}
else
{
try
{
instance = XmlManager<QuestStats>.Load(FilePath);
}
catch (Exception e)
{
Log.Error(e);
instance = new QuestStats();
}
}
return instance;
}
private static void Save(QuestStats instance) => XmlManager<QuestStats>.Save(FilePath, instance);
public static void Save() => Save(Instance);
// ALTRO NON IMPORTANTE
}
public class QuestInfo
{
public QuestInfo()
{
}
public QuestInfo(long qid, string qname, string qdesc, string qdateGiven, string qdateCompleted)
{
QuestId = qid;
QuestName = qname;
QuestDescription = qdesc;
DateGiven = qdateGiven;
DateCompleted = qdateCompleted;
}
[XmlAttribute("questId")]
//public Guid QuestId { get; set; }
public long QuestId { get; set; }
[XmlAttribute("questName")]
public string QuestName { get; set; }
[XmlAttribute("questDescription")]
public string QuestDescription { get; set; }
[XmlAttribute("dateGiven")]
public string DateGiven { get; set; }
[XmlAttribute("dateCompleted")]
public string DateCompleted { get; set; }
}
Ora, se metto un breakpoint nel metodo privato Save
vedo che instance ha qualcosa nelle '_currentQuests' (una quest). Pero' poi dopo che salva, nessun errore, crea il file .xml ma e' vuoto, cioe' c'e' lo schema XML ma nessuna entry dentro il root object
<?xml version="1.0" encoding="utf-8"?>
<Quests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
Cosa mi manca? Una mano? Penso soprattutto a c# boyz tipo @ManHunter e @Nemo ...