public List <T> ReadFileToList(ApplicationXmlFiles.FileType fileType)
        {
            string filepath = ApplicationXmlFiles.GetFilePath(fileType);

            if (!Directory.Exists(ApplicationXmlFiles.UserFileDirectory))
            {
                Directory.CreateDirectory(ApplicationXmlFiles.UserFileDirectory);
            }

            if (File.Exists(filepath))
            {
                List <T> readTo = new List <T>();

                using (var reader = new StreamReader(filepath))
                {
                    try
                    {
                        XmlSerializer deserializer = new XmlSerializer(typeof(List <T>));
                        readTo = (List <T>)deserializer.Deserialize(reader);
                        return(readTo);
                    }
                    catch
                    {
                        MessageBox.Show($"There was an error reading {filepath}. The file will be overwritten with a new file.", "Error reading file", MessageBoxButton.OK, MessageBoxImage.Error);
                        return(new List <T>());
                    }
                }
            }
            else
            {
                return(new List <T>());
            }
        }
        public void WriteListToFile(ApplicationXmlFiles.FileType fileType, List <T> ListToWrite)
        {
            string        filepath   = ApplicationXmlFiles.GetFilePath(fileType);
            XmlSerializer serializer = new XmlSerializer(typeof(List <T>));
            CharacterList clist      = CharacterList.Instance;

            using (var writer = new StreamWriter(filepath))
            {
                using (XmlWriter xmlWriter = XmlWriter.Create(writer))
                {
                    serializer.Serialize(xmlWriter, ListToWrite);
                }
                writer.Close();
            }
        }