Как правильно хранить и обрабатывать данные на C#

Всем здрас-те.
Проблема такая: пишу на C# WPF лаунчер для своего проекта (MineCraft).
Все шло хорошо, до тех пор, пока не понял, что нужно хранить все-таки конфигурацию, текущий профиль, и т.п. в файлах.
Поискал в Google, понял, что лучше всего использовать - XML.
Ну, поискал на эту тему, не нашел дельного.
Мне ведь что нужно:
1) Запись в файл XML сначала пустой строки, like this:
<?xml version="1.0" encoding="utf-8"?>
<response>
<lastlogin>none</lastlogin>
<system>windows</system>
</response>

2) Чтение из файла, желательно сразу войд.
Чтобы юзинг был таков:
ReadConfig("lastlogin")
и он мне говорил что лежит в lastlogin
И тоже самое со всем остальным

Заранее ОГРОМНОЕ спасибо.
  • Вопрос задан
  • 7251 просмотр
Решения вопроса 1
dzedzinskiy
@dzedzinskiy
Full stack developer
System.Xml.Serialization.XmlSerializer reader = 
        new System.Xml.Serialization.XmlSerializer(typeof(User));
    System.IO.StreamReader file = new System.IO.StreamReader(
        @"c:\temp\userData.xml");
    UserData user= new UserData();
    user = (UserData)reader.Deserialize(file);
if(user!=null)
    Console.WriteLine(user.lastlogin); // тут будет доступ к полю lastlogin объекта user

в программе создайте класс объекта типа того
public class UserData
{
     public string userlogin{get;set;}
}


Если вам нужно доступ такой как вы писали выше - используйте что то типа того:
XmlNodeList elemList = doc.GetElementsByTagName("lastlogin");
    for (int i = 0; i < elemList.Count; i++)
    {
        Console.WriteLine(elemList[i].InnerXml);
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Vadimyan
@Vadimyan
Программист C#
Если речь идет о параметрах приложения, почему бы не воспользоваться стандартным механизмом конфигурационных файлов .net?
В сложных случаях, когда параметров много и они разделены на логические группы, можно создать несколько configuration section.
А в простых сценариях, если вы не боитесь запутаться в именах конфигурационных параметров, можно обойтись просто ConfigurationManager.

var lastLogin = config.AppSettings["LastLogin"];

Это стандартный механизм дотнета, не нужно париться с созданием кастомного файла, структурой, проверками.
Ответ написан
Комментировать
XuPoH
@XuPoH Автор вопроса
Простите, а как мне на выходе обойтись без доп. файлов?
Ответ написан
Комментировать
dzedzinskiy
@dzedzinskiy
Full stack developer
AppConfig используют для управления приложением, но никак ни сохранением в него данных приложением. Я так понимаю, вам нужно сохранять данные пользователя, и правильно, используйте xml. Вот тут пример как писать в xml,
а тут про чтение. А про чтение - лучше считать один раз весь файл xml а потом только брать данные из объекта, хотя зависит от размеров файла
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы