C# 如何使用一个基本ConfigurationSection类从web.config获取两个不同的节?
我需要从web.config中的C# 如何使用一个基本ConfigurationSection类从web.config获取两个不同的节?,c#,c#-4.0,web-config,C#,C# 4.0,Web Config,我需要从web.config中的viewModelSettings部分获取数据 <vmSettings namespace="Site.Web.ViewModels" assembly="Site.Web"/> 现在,我有另一个部分(vmSettings2)与上面的部分相同,但名称不同 我不想编写另一个ConfigurationSection类,而是使用上面的一个(但它应该得到vmSettings2节),并像VM2.Settings.Namespace那样使用它。我如何实现这一点
viewModelSettings
部分获取数据
<vmSettings namespace="Site.Web.ViewModels" assembly="Site.Web"/>
现在,我有另一个部分(vmSettings2)与上面的部分相同,但名称不同
我不想编写另一个ConfigurationSection类,而是使用上面的一个(但它应该得到vmSettings2节),并像VM2.Settings.Namespace那样使用它。我如何实现这一点?可能从VM类继承,但如何重写节名?您不能将VM类转换为抽象基类吗 然后,您可以从vmSettings1和vmSettings2派生两个类,这两个类只需使用基类中定义的方法即可 您可能会将VM用作接口,但随后您将被迫为每个类实现每个方法,这可能是您希望在此处避免的类型。尝试以下方法:
public class VM : ConfigurationSection
{
public static VM GetSection(string section)
{
return ConfigurationManager.GetSection(section) as VM;
}
[ConfigurationProperty("namespace", IsRequired = true)]
public string Namespace
{
get
{
return (string)base["namespace"];
}
}
[ConfigurationProperty("assembly", IsRequired = true)]
public string Assembly
{
get
{
return (string)base["assembly"];
}
}
}
但是,如何覆盖静态属性?你能给我举个例子,这样我仍然可以像VM1.Settings.Namespace VM2.Settings.Namespace那样使用它,但我希望能够以这种方式使用get Namespace VM1.Settings.Namespace VM2.Settings.Namespace
public class VM : ConfigurationSection
{
public static VM GetSection(string section)
{
return ConfigurationManager.GetSection(section) as VM;
}
[ConfigurationProperty("namespace", IsRequired = true)]
public string Namespace
{
get
{
return (string)base["namespace"];
}
}
[ConfigurationProperty("assembly", IsRequired = true)]
public string Assembly
{
get
{
return (string)base["assembly"];
}
}
}