public static T Load(string filename, bool appData) { T set = default(T); lastFile = filename; #if MONO DateTime startTime = DateTime.Now; DebugLogger.WriteLine("Loading [" + filename + "]"); #endif try { // Open document XmlSerializer serializer = new XmlSerializer(typeof(T)); serializer.UnknownNode += new XmlNodeEventHandler(serializer_UnknownNode); serializer.UnknownAttribute += new XmlAttributeEventHandler(serializer_UnknownAttribute); #if ANDROID string path = filename; Stream io; StreamReader fs; if (!appData) { if (path.StartsWith("/")) { io = File.Open(path, FileMode.Open); fs = new StreamReader(io); } else { io = CoreContext.Context.Assets.Open(path); fs = new StreamReader(io); } } else { path = Path.Combine(AppDataDir, filename); io = File.Open(path, FileMode.Open); fs = new StreamReader(io); } using (io) { using (fs) { #else String file = SaveFileName(filename, appData); if (new FileInfo(file).Exists) { using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)) { #endif xmlAttributeErrors = new Dictionary <string, string>(); set = (T)serializer.Deserialize(fs); if (xmlAttributeErrors.Count > 0) { DebugLogger.WriteLine("XmlListLoader: " + lastFile); foreach (string st in xmlAttributeErrors.Keys) { DebugLogger.WriteLine(st); } } #if !ANDROID fs.Close(); #endif } } } catch (Exception ex) { DebugLogger.WriteLine(ex.ToString()); if (!appData) { throw; } } #if MONO DebugLogger.WriteLine("Finished [" + filename + "] Time: " + (DateTime.Now - startTime).TotalSeconds.ToString() + " secs"); #endif return(set); }