Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用一个基本ConfigurationSection类从web.config获取两个不同的节?_C#_C# 4.0_Web Config - Fatal编程技术网

C# 如何使用一个基本ConfigurationSection类从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那样使用它。我如何实现这一点

我需要从web.config中的
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"];
            }
        }        
    }