Хранение параметров - задача вполне себе типовая. И для неё есть готовые решения, например тот же UserSettings. Но лично мне он не показался особо удобным, плюс в произвольном месте конфигурацию тоже не расположить.
Для борьбы с этой проблемкой будем использовать сериализацию.
В данном случае используется XML- сериализация. Что она из себя представляет? Грубо говоря, это сохранение класса на диск в виде xml файла.
Важно: сериализуются только открытые (public) поля и свойства. Зато сериализуются очень просто, буквально в пару движений.
Итак, для начала нам нужно подготовить класс, в котором будут содержаться параметры приложения. Для примера, пусть он содержит параметры подключения к SQL серверу.
}
Коротко о классе:
[Serializable] - атрибут, указывающий на то, что класс может сериализоваться.
конструкция { get; set; } просто создаёт автосвойство. Можно создавать свойства и с полным описанием, но в данном случае смысла в этом нет.
Отлично, класс у нас есть. Теперь присваиваем ему значения.
Осталось сериализовать.
Для этого создаём экземпляр сериализатора, открываем для записи файловый поток и сериализатору этот поток и экземпляр класса настроек. В результате мы получим файл my_Settings.xml, расположенный в том-же каталоге, что и программа. Содержимое файла:
Для борьбы с этой проблемкой будем использовать сериализацию.
В данном случае используется XML- сериализация. Что она из себя представляет? Грубо говоря, это сохранение класса на диск в виде xml файла.
Важно: сериализуются только открытые (public) поля и свойства. Зато сериализуются очень просто, буквально в пару движений.
Итак, для начала нам нужно подготовить класс, в котором будут содержаться параметры приложения. Для примера, пусть он содержит параметры подключения к SQL серверу.
[Serializable]
public class Settings
{
public class Settings
{
public string server_name
{ get; set; }
public string base_name
{ get; set; }
{ get; set; }
public string base_name
{ get; set; }
Коротко о классе:
[Serializable] - атрибут, указывающий на то, что класс может сериализоваться.
конструкция { get; set; } просто создаёт автосвойство. Можно создавать свойства и с полным описанием, но в данном случае смысла в этом нет.
Отлично, класс у нас есть. Теперь присваиваем ему значения.
Settings sett = new Settings();
sett.server_name = "my_server";
sett.base_name = "my_base";
Осталось сериализовать.
XmlSerializer Serializer = new XmlSerializer(typeof(Settings));
StreamWriter myWriter = new StreamWriter(@"my_Settings.xml");
Serializer.Serialize(myWriter, sett);
myWriter.Close();
StreamWriter myWriter = new StreamWriter(@"my_Settings.xml");
Serializer.Serialize(myWriter, sett);
myWriter.Close();
Для этого создаём экземпляр сериализатора, открываем для записи файловый поток и сериализатору этот поток и экземпляр класса настроек. В результате мы получим файл my_Settings.xml, расположенный в том-же каталоге, что и программа. Содержимое файла:
<?xml
version="1.0" encoding="utf-8" ?>
- <Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<server_name>my_server</server_name>
<base_name>my_base</base_name>
</Settings>
Отлично, настройки сохранить получилось. Теперь нужно их прочитать. Делается это следующим образом:
Settings sett = new Settings();
XmlSerializer Serializer = new XmlSerializer(typeof(Settings));
FileStream myFileStream = new FileStream(@"my_Settings.xml", FileMode.Open);
sett = (Settings)Serializer.Deserialize(myFileStream);
FileStream myFileStream = new FileStream(@"my_Settings.xml", FileMode.Open);
sett = (Settings)Serializer.Deserialize(myFileStream);
myFileStream.Close();
Опять создаём объект сериализатора, опять открываем файл, только на этот раз на чтение и десериализуем открытый файл, приводя тип. При этом крайне желательно не забывать закрывать ненужные файлы.
Собственно, на этом и все.
Комментариев нет:
Отправить комментарий