如何将自定义设置的两个部分添加到app.config并将其读入asp.net中的类?

时间:2013-03-15 12:37:52

标签: asp.net vb.net app-config custom-sections

我需要在app.config中存储2个设置部分,并根据初始化类时传递的值,我将加载其中一个设置部分。

这是我理想地实现的目标:

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 个答案:

答案 0 :(得分: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; }
    }
}

答案 1 :(得分:0)

这可能超出app.config文件支持的范围。但是,您当然可以在应用程序目录中包含自己的xml文件,并使用XPath对其进行解析,以便按照您的描述加载设置。