Как добавить два раздела пользовательских настроек в 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, чтобы загрузить настройки, как вы описываете.

Другие вопросы по тегам