C #: импорт / экспорт настроек в / из файла - PullRequest
2 голосов
/ 18 сентября 2008

Каков наилучший способ импорта / экспорта внутренних настроек приложения в файл из приложения?

У меня есть файл Settings.settings, пользовательский интерфейс winform связан с файлом настроек, и я хочу импортировать / экспортировать настройки, аналогично функции импорта / экспорта настроек Visual Studio.

Ответы [ 5 ]

2 голосов
/ 18 сентября 2008

Если вы используете файл Settings.settings, он сохраняется в файле конфигурации. Вызвав YourNamespace.Properties.Settings.Save () после обновления настроек, они будут сохранены в файлах конфигурации.

Однако я понятия не имею, что вы подразумеваете под «множественными наборами настроек». Если настройки являются пользовательскими настройками, у каждого пользователя будет свой набор настроек. Если у вас есть несколько наборов настроек для одного пользователя, вам, вероятно, не следует использовать файлы .settings; вместо этого вы захотите использовать базу данных.

0 голосов
/ 18 сентября 2008

Я попробовал и опробовал способ разработки класса контейнера настроек. Этот контейнерный класс может иметь подклассы для разных типов категорий настроек. Это работает хорошо, так как вы ссылаетесь на свои «настройки» через имя свойства, и поэтому, если что-то изменится в будущем, вы получите ошибки времени компиляции. Это также расширяемо, поскольку вы всегда можете создавать новые настройки, добавляя дополнительные свойства к вашим индивидуальным классам настроек и назначая значения по умолчанию для закрытой переменной свойства, которое будет использоваться, если этот конкретный параметр не существует в более старой версии вашего приложения. После сохранения нового контейнера новые настройки также будут сохранены. Другим преимуществом является очевидная читаемость XML для человека / компьютера, что хорошо для настроек.

Для сохранения сериализуйте объект контейнера в данные XML, затем запишите данные в файл. Для загрузки прочитайте данные из файла и десериализируйте обратно в класс контейнера настроек.

Для сериализации через стандартный код C #:

public static string SerializeToXMLString(object ObjectToSerialize)
MemoryStream mem = new MemoryStream();          
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(ObjectToSerialize.GetType());
ser.Serialize(mem,ObjectToSerialize);                       
ASCIIEncoding ascii = new ASCIIEncoding();
return ascii.GetString(mem.ToArray());

Для десериализации с помощью стандартного кода C #:

public static object DeSerializeFromXMLString(System.Type TypeToDeserialize, string xmlString)
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(xmlString);
MemoryStream mem = new MemoryStream(bytes);         
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(TypeToDeserialize);
return ser.Deserialize(mem);

Еще одна приятная вещь о сериализуемых классах настроек - это то, что это объект, вы можете использовать IntelliSense для быстрого перехода к определенной настройке.

Примечание. После создания экземпляра класса контейнера настроек вы должны сделать его статическим свойством другого статического класса управления (вы можете назвать его SettingsManager, если хотите) Этот управляющий класс позволяет вам получать доступ к вашим настройкам из любого места в вашем приложении (поскольку оно статическое), а также вы можете иметь статические функции для обработки загрузки и сохранения класса.

0 голосов
/ 18 сентября 2008

Вы можете просто использовать разделы, или вы переходите к другим файлам по определенной причине?

0 голосов
/ 18 сентября 2008

Вы говорите о файлах конфигурации?

0 голосов
/ 18 сентября 2008

Вы можете использовать DataSet, который вы привязываете к форме. И вы можете сохранить / восстановить его.

...