Как добавить два раздела пользовательских настроек в app.config и прочитать их в классе в asp.net?
Мне нужно хранить 2 раздела настроек в app.config и на основании значения, переданного при инициализации класса, я загружу один из разделов настроек.
Это то, что мне нужно достичь в идеале:
Учебный класс
Public Class SiteSettings
Sub New(ByVal Id As Integer)
If Id = 1 Then
'Load in group1 settings.
'Ideally the settings will be available as properties
Else
'Load in group2 settings
End If
End Sub
...
End Class
Код
Dim objSettings = New SiteSettings(Id)
'just to demo what I'm trying to achieve
response.Write(objSettings.setting1)
App.config
<siteSettings>
<section name="group1">
<setting1 value="abc" />
</section>
<section name="group2">
<setting1 value="xyz" />
</section>
</siteSettings>
2 ответа
Это не должно быть трудно читать в ваших собственных настройках. Существует много кода для чтения пользовательских настроек конфигурации - просто посмотрите на ссылки в разделе "Связанные" на этой странице. Если ваш объект настроек является сериализуемым, вы можете извлечь экземпляр из app.config, используя поддержку пользовательских настроек.
Если вы хотите создать экземпляр объекта и инкапсулировать всю логику чтения настроек в конструкторе, вам, вероятно, придется написать обертку для вашего фактического пользовательского параметра конфигурации, примерно так:
public interface ISettings
{
int Setting1 { get; set; }
}
[Serializable]
public class ActualSettings : ISettings
{
public int Setting1 { get;set;}
}
public class SettingsAdapter : ISettings
{
private ISettings settings;
public SettingsAdapter(int id)
{
if(id == 1)
settings = // code to retrieve instance #1 from app.config
else
settings = // code to retrieve instance #2 from app.config
}
public int Setting1 {
get { return settings.Setting1; }
set { settings.Setting1 = value; }
}
}
Это может быть за пределами того, что поддерживается в файле app.config. Тем не менее, вы, безусловно, можете включить свой собственный XML-файл в каталог приложения и проанализировать его с помощью XPath, чтобы загрузить настройки, как вы описываете.