Есть ли разница между загрузкой значения из app.config и его загрузкой из объекта? - PullRequest
0 голосов
/ 25 августа 2010

Это мой app.config:

<appSettings>
    <add key="PreRootFolder" value="D:\" />
    <add key="RootFolder" value="webSite" />
    <add key="Folder" value="folder_a" />        
</appSettings>

Поскольку я предпочитаю строить путь в приложении, а не иметь много ключей для каждой части пути ... (сложно поддерживать), поэтому я строю путь следующим образом:

string prePath = ConfigurationManager.AppSettings["PreRootFolder"];
string rootFolder = ConfigurationManager.AppSettings["RootFolder"];
string folder= ConfigurationManager.AppSettings["Folder"];

// global param (actually accessed by ((MainFormName)mainParent)).g_fullOriginalRoot         
string g_fullOriginalRoot = prePath + "\\" + rootFolder + "\\" + fodler; 

Я делаю это в родительской форме MDI приложения (чтобы она никогда не умирала)

Я сделал это, потому что узнал, что я звоню этим ключам много раз, и теперь я могу получить данные от родителя.

Интересно, правильное ли мое решение?

Параметры app.config загружаются как глобальные переменные?

Ответы [ 2 ]

2 голосов
/ 25 августа 2010

Разумно использовать глобально доступный (статический или одноэлементный) объект, который запоминает настройки в этом случае.

Многие недостатки глобалов менее серьезны, когда связь является односторонней (классические случаи - только чтение и запись только для записи). Кроме того, поскольку параметры настройки являются глобальными, они соответствуют тому, что моделируется.

Я бы предпочел сделать это в своем классе, а не в форме MDI. Форма должна моделировать вещи, которые имеют отношение к форме, другие объекты должны моделировать другие проблемы.

1 голос
/ 25 августа 2010

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

Это соображение, конечно, более важно для долго работающего приложения, чем для коротко сессионных приложений.

...