使用配置元素集合c#实现自定义部分

Puti26

大家好,我想在项目中实现自定义配置部分。但是有些我不明白的地方所以行不通。

我有看起来像这样的App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="DepartmentConfigurationSection" type="Statistics.Config.DepartmentSection , Program1"/>
  </configSections>
  <s>
    <Cash>
      <add Number="1" Name="Money" />
    </Cash>
    <Departments>
      <add Id="1" Name="x" />
      <add Id="2" Name="y" />
    </Departments>
  </s>
</configuration>

我创建了一个名为DepartmentSection.cs的文件,其中包含ConfigurationElement,ConfigurationElementCollection和ConfigurationSection。该类是这样的:

 public class DepartmentConfig : ConfigurationElement
    {
        public DepartmentConfig() { }

        public DepartmentConfig(int id, string name)
        {
            Id = id;
            Name = name;
        }

        [ConfigurationProperty("Id", IsRequired = true, IsKey = true)]
        public int Id
        {
            get { return (int)this["Id"]; }
            set { this["Id"] = value; }
        }

        [ConfigurationProperty("Name",  IsRequired = true, IsKey = false)]
        public string Name
        {
            get { return (string)this["Name"]; }
            set { this["Name"] = value; }
        }
    }


    public class DepartmentCollection : ConfigurationElementCollection
    {
        public DepartmentCollection()
        {
            Console.WriteLine("ServiceCollection Constructor");
        }

        public DepartmentConfig this[int index]
        {
            get { return (DepartmentConfig)BaseGet(index); }
            set
            {
                if (BaseGet(index) != null)
                {
                    BaseRemoveAt(index);
                }
                BaseAdd(index, value);
            }
        }

        public void Add(DepartmentConfig depConfig)
        {
            BaseAdd(depConfig);
        }

        public void Clear()
        {
            BaseClear();
        }

        protected override ConfigurationElement CreateNewElement()
        {
            return new DepartmentConfig();
        }

        protected override object GetElementKey(ConfigurationElement element)
        {
            return ((DepartmentConfig)element).Id;
        }

        public void Remove(DepartmentConfig depConfig)
        {
            BaseRemove(depConfig.Id);
        }

        public void RemoveAt(int index)
        {
            BaseRemoveAt(index);
        }

        public void Remove(string name)
        {
            BaseRemove(name);
        }
    }


    public class DepartmentConfigurationSection : ConfigurationSection
    {
        [ConfigurationProperty("Departments", IsDefaultCollection = false)]
        [ConfigurationCollection(typeof(DepartmentCollection),
            AddItemName = "add",
            ClearItemsName = "clear",
            RemoveItemName = "remove")]
        public DepartmentCollection Departments
        {
            get
            {
                return (DepartmentCollection)base["Departments"];
            }
        }
    }

我试图从处理程序中获取集合,但是没有成功。我尝试这样,但是给了我这个错误:“无法初始化系统配置”。

    DepartmentConfigurationSection serviceConfigSection =
    ConfigurationManager.GetSection("s") as DepartmentConfigurationSection;

    DepartmentConfig serviceConfig = serviceConfigSection.Departments[0];

请帮帮我!谢谢..

rsbarro

问题似乎出在您app.config(或web.config)。包含自定义配置XML的元素必须与在中的name属性中指定的名称匹配configSections\section例如,为了使代码按编写的方式工作,app.config应该看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="s" type="Statistics.Config.DepartmentConfigurationSection, Program1"/>
  </configSections>
  <s>
    <Cash>
      <add Number="1" Name="Money" />
    </Cash>
    <Departments>
      <add Id="1" Name="x" />
      <add Id="2" Name="y" />
    </Departments>
  </s>
</configuration>

如您所见,section name="s"匹配项与s元素的名称匹配另外,您将类型列为Statistics.Config.DeptartmentSection,但类名是DepartmentConfigurationSection,因此它应与您尝试加载的类匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用配置元素集合c#实现自定义部分

来自分类Dev

Web配置转换为自定义部分

来自分类Dev

app.config - 配置系统无法使用自定义部分初始化

来自分类Dev

pipfile中的自定义部分

来自分类Dev

将自定义部分保存到配置文件

来自分类Dev

在Umbraco 7自定义部分中使用Angular-Datatable

来自分类Dev

如何在自定义部分使用ConfigurationManager.AppSettings?

来自分类Dev

如何在自定义帖子中添加 wordpress 自定义部分

来自分类Dev

使用sbt进行自定义部署

来自分类Dev

如何在C ++中实现自定义std集合?

来自分类Dev

C#中具有自定义集合的元素指标

来自分类Dev

在QTCreator中自定义部署

来自分类Dev

在配置部分中使用自定义ViewHelper

来自分类Dev

如何访问金字塔.ini文件中的自定义部分?

来自分类Dev

Umbraco 7:如何在自定义部分刷新树形视图?

来自分类Dev

如何在WooCommerce产品设置页面中添加自定义部分

来自分类Dev

在app.config中添加自定义部分后,出现System.InvalidCastException

来自分类Dev

在转移学习中,网络的自定义部分称为什么?

来自分类Dev

Umbraco 7:如何在自定义部分刷新树形视图?

来自分类Dev

如何在Liferay的“用户编辑”屏幕中添加自定义部分?

来自分类Dev

在app.config中添加自定义部分后,出现System.InvalidCastException

来自分类Dev

如何在Azure Web App的自定义部分中覆盖web.config值?

来自分类Dev

在mvc视图的web.config自定义部分中获取参数的值

来自分类Dev

无法获取少数字符串的自定义部分

来自分类Dev

带有自定义配置部分的配置文件中无法识别的元素“ Item”

来自分类Dev

带有自定义配置部分的配置文件中无法识别的元素“ Item”

来自分类Dev

C#自定义事件不想使用表单(部分类)

来自分类Dev

自定义配置部分.NET

来自分类Dev

自定义配置部分的问题

Related 相关文章

  1. 1

    使用配置元素集合c#实现自定义部分

  2. 2

    Web配置转换为自定义部分

  3. 3

    app.config - 配置系统无法使用自定义部分初始化

  4. 4

    pipfile中的自定义部分

  5. 5

    将自定义部分保存到配置文件

  6. 6

    在Umbraco 7自定义部分中使用Angular-Datatable

  7. 7

    如何在自定义部分使用ConfigurationManager.AppSettings?

  8. 8

    如何在自定义帖子中添加 wordpress 自定义部分

  9. 9

    使用sbt进行自定义部署

  10. 10

    如何在C ++中实现自定义std集合?

  11. 11

    C#中具有自定义集合的元素指标

  12. 12

    在QTCreator中自定义部署

  13. 13

    在配置部分中使用自定义ViewHelper

  14. 14

    如何访问金字塔.ini文件中的自定义部分?

  15. 15

    Umbraco 7:如何在自定义部分刷新树形视图?

  16. 16

    如何在WooCommerce产品设置页面中添加自定义部分

  17. 17

    在app.config中添加自定义部分后,出现System.InvalidCastException

  18. 18

    在转移学习中,网络的自定义部分称为什么?

  19. 19

    Umbraco 7:如何在自定义部分刷新树形视图?

  20. 20

    如何在Liferay的“用户编辑”屏幕中添加自定义部分?

  21. 21

    在app.config中添加自定义部分后,出现System.InvalidCastException

  22. 22

    如何在Azure Web App的自定义部分中覆盖web.config值?

  23. 23

    在mvc视图的web.config自定义部分中获取参数的值

  24. 24

    无法获取少数字符串的自定义部分

  25. 25

    带有自定义配置部分的配置文件中无法识别的元素“ Item”

  26. 26

    带有自定义配置部分的配置文件中无法识别的元素“ Item”

  27. 27

    C#自定义事件不想使用表单(部分类)

  28. 28

    自定义配置部分.NET

  29. 29

    自定义配置部分的问题

热门标签

归档