2013-03-15 7 views
0

Мне нужно сохранить 2 раздела настроек в app.config и на основе значения, переданного при инициализации класса, я загружу один из разделов настроек.Как добавить два раздела пользовательских настроек в app.config и прочитать их в классе в asp.net?

Это то, что мне нужно получить в идеале:

Класс

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> 

ответ

1

Его не должно быть трудно читать в ваших собственных настройках. Существует много кода для чтения пользовательских настроек конфигурации - просто просмотрите ссылки в разделе «Связанные» на этой странице. Если объект настроек является сериализуемым, вы можете получить экземпляр из 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; } 
    } 
} 
+0

Упс, я сделал это в C#. Но ты получил идею. –

+0

Без проблем, я его преобразую, спасибо. – DAC84

+0

У меня есть работа, основанная на этом коде. – DAC84

0

Это может быть за пределами того, что поддерживается в файле app.config. Тем не менее, вы можете, конечно, включить свой собственный XML-файл в каталог приложения и проанализировать его с помощью XPath для загрузки ваших настроек по мере их описания.