Здравствуйте, BlezAlex, Вы писали :
BA>сохраняются только public свойства, добавь по свойству на каждую BA>переменную, кот. нужно сохранить, и будет работать
Добавил.
Результат тот же самій. То же содержимое файла.
public class Config
{
//[XmlTextAttribute]public string spTest
{
get{return strTest22;}
set{strTest22=value;}
}
private string strTest22= "hello";
Любопытно
Скопировал твой первый исходник, все ОК, сохранилось.
Вобще я ошибся, это в propertyGrid отображаются только public свойства,
а сохранятся должны все..
"BlezAlex" <54356@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1894893@news.rsdn.ru... > Любопытно > Скопировал твой первый исходник, все ОК, сохранилось. > Вобще я ошибся, это в propertyGrid отображаются только public свойства, > а сохранятся должны все..
Да уж.
Действительно любопытно.
Что ли и себе скопировать?
Config cfg = new Config();
cfg.spTest="sasa";
cfg.Save();
"BlezAlex" <54356@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1894893@news.rsdn.ru... > Любопытно > Скопировал твой первый исходник, все ОК, сохранилось. > Вобще я ошибся, это в propertyGrid отображаются только public свойства, > а сохранятся должны все..
A>"BlezAlex" <54356@users.rsdn.ru> сообщил/сообщила в новостях следующее: A>news:1894975@news.rsdn.ru... >>а я так: >> Config.Instance.Save();
A>Спасибо! A>Заработало . A>Буду завтра разбираться в чем біл поинт. >> >> >> p.s. VS 2005
Поинт в том, что у Config нет public constructor который бы инициализировал instance. При вызове config.Save(), instance равен null и строчка xs.Serialize(fs,instance) сериализует ничто...
Вообще, я бы запретил использование new добавив пустой private constructor и тогда Config config = new Config() выдавало бы ошибку компиляции заставляя пользоваться Config config = Config.Instance.
" Варвар " <19277@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1896129@news.rsdn.ru... > Здравствуйте, alexdp, Вы писали: > > > A>"BlezAlex" <54356@users.rsdn.ru> сообщил/сообщила в новостях следующее: > A>news:1894975@news.rsdn.ru...
> Поинт в том, что у Config нет public constructor который бы > инициализировал instance. При вызове config.Save(), instance равен null и > строчка xs.Serialize(fs,instance) сериализует ничто... > Вообще, я бы запретил использование new добавив пустой private constructor > и тогда Config config = new Config() выдавало бы ошибку > > > компиляции > заставляя пользоваться Config config = Config.Instance.
Понятно. Спасибо.
Но все таки, где брать LocalUser.GetDatabasePath()
Здравствуйте, alexdp, Вы писали:
A>Но все таки, где брать LocalUser.GetDatabasePath()
Пример в статье выдернут из реального проекта в котором был класс LocalUser. Он тебе не нужен. Тебе нужен путь к директории в которой лежит конфигурационный файл. Обычно это таже директория в которой лежит exe. Можно воспользоваться Environment.CurrentDirectory.
" Варвар " <19277@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1902335@news.rsdn.ru... > Здравствуйте, alexdp, Вы писали: > > A>Но все таки, где брать LocalUser.GetDatabasePath() > > Пример в статье выдернут из реального проекта в котором был класс > LocalUser. Он тебе не нужен. Тебе нужен путь к директории в которой лежит > конфигурационный файл. Обычно это таже директория в которой лежит exe. > Можно воспользоваться Environment.CurrentDirectory.
Спасибо за объяснение.
CurrentDirectory вполне подойдет.
Здравствуйте, Варвар, Вы писали:
В>Пример в статье выдернут из реального проекта в котором был класс LocalUser. Он тебе не нужен. Тебе нужен путь к директории в которой лежит конфигурационный файл. Обычно это таже директория в которой лежит exe. Можно воспользоваться Environment.CurrentDirectory.
Не надо учить плохому, лучше в Application Data создать папку от программы и там хранить конфиги. Но не рядом с исполняемым файлом — у пользователя может не хватить прав на запись. Если это конечно не приложение для себя.
... <<My edition based on RSDN@Home 1.2.0 alpha rev. 648>>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Здравствуйте, stele, Вы писали:
S>Здравствуйте, Варвар, Вы писали:
В>>Пример в статье выдернут из реального проекта в котором был класс LocalUser. Он тебе не нужен. Тебе нужен путь к директории в которой лежит конфигурационный файл. Обычно это таже директория в которой лежит exe. Можно воспользоваться Environment.CurrentDirectory.
S>Не надо учить плохому, лучше в Application Data создать папку от программы и там хранить конфиги. Но не рядом с исполняемым файлом — у пользователя может не хватить прав на запись. Если это конечно не приложение для себя.
Для учебных целей сойдёт, а для реального приложения пути к конфигурационным файлам и типы соотвествуюших им классов прописываются в специальном секшене в app.config, для которого пишется специальный ConfigurationSectionHandler, которым пользуется специальный ConfigManager, управляющий всеми конфигами в апликации, в котором и имплементируется (один раз) превращение конфиг файла в объект соответствующего класса (и наоборот). Но это в реальном приложении, а для учебных целей сойдёт и то что описано в статье
Кстати... Как получть путь к Application Data?
Здравствуйте, Варвар, Вы писали:
В> Но это в реальном приложении, а для учебных целей сойдёт и то что описано в статье
В статье всё нормально. Я о другом. Я о том, что тебе предложили и ты согласился хранить файл с настройками рядом со своей программой. Лучше сразу тренироваться как в бою и не привыкать к порочной практике — тебе проще файл настроек рядом уронить, а проблему от этого получит сапорт и пользователь.
В>Кстати... Как получть путь к Application Data?
смотри System.Environment.GetFolderPath
... <<My edition based on RSDN@Home 1.2.0 alpha rev. 648>>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Здравствуйте, stele, Вы писали:
В>> Я о том, что тебе предложили и ты согласился хранить файл с настройками рядом со своей программой.
Предложили не мне, а я. Как самый простой способ для тестовой програмки. Согласен, что не самый верный. Хотя бы потому что CurrentDirectory во время выполнения может и поменяться...
В>>Кстати... Как получть путь к Application Data? S>смотри System.Environment.GetFolderPath
Спасибо. Буду знать
Здравствуйте, Варвар, Вы писали:
В>Предложили не мне, а я.
Хм, и в правду ты предложил, обознался.
В>Как самый простой способ для тестовой програмки. Согласен, что не самый верный. Хотя бы потому что CurrentDirectory во время выполнения может и поменяться...
Точно.
... <<My edition based on RSDN@Home 1.2.0 alpha rev. 648>>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Статья замечательная. А можно поподробней на счет вот этой штуки
private static XmlSerializer CreateSerializer()
{
ArrayList res = new ArrayList();
foreach(DictionaryEntry de in PluginManager.Instance.ConfigurablePlugins)
res.Add(((IConfigurablePlugin)de.Value).Config.GetType());
return new XmlSerializer(typeof(Config), (Type[])res.ToArray(typeof(Type)));
}
Хочется сделать универсальный Config-класс для различных приложений и Config, естественно, будет меняться от одного к другому. Как тут быть? Понятно что как-то конфигу надо говорить какие типы он будет сериализовывать. А вот дальше ...
Здравствуйте, sleepwalker, Вы писали:
S>Хочется сделать универсальный Config-класс для различных приложений и Config, естественно, будет меняться от одного к другому. Как тут быть?
Простого ответа на этот вопрос у меня нет. А сложный на статью тянет, если не больше.