我需要在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>
答案 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对其进行解析,以便按照您的描述加载设置。