猿问

如何使用ConfigurationElementCollection实现Configuration

我正在尝试在项目中实现自定义配置部分,并且不断遇到我不理解的异常。我希望有人可以在这里填空。


我App.config看起来像这样:


<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <configSections>

        <section name="ServicesSection" type="RT.Core.Config.ServicesConfigurationSectionHandler, RT.Core"/>

    </configSections>

    <ServicesSection type="RT.Core.Config.ServicesSection, RT.Core">

            <Services>

                <AddService Port="6996" ReportType="File" />

                <AddService Port="7001" ReportType="Other" />

            </Services>

        </ServicesSection>

</configuration>

我有一个ServiceConfig这样定义的元素:


public class ServiceConfig : ConfigurationElement

  {

    public ServiceConfig() {}


    public ServiceConfig(int port, string reportType)

    {

      Port = port;

      ReportType = reportType;

    }


    [ConfigurationProperty("Port", DefaultValue = 0, IsRequired = true, IsKey = true)]

    public int Port 

    {

      get { return (int) this["Port"]; }

      set { this["Port"] = value; }

    }


    [ConfigurationProperty("ReportType", DefaultValue = "File", IsRequired = true, IsKey = false)]

    public string ReportType

    {

      get { return (string) this["ReportType"]; }

      set { this["ReportType"] = value; }

    }

  }

我有一个ServiceCollection这样的定义:


public class ServiceCollection : ConfigurationElementCollection

  {

    public ServiceCollection()

    {

      Console.WriteLine("ServiceCollection Constructor");

    }


    public ServiceConfig this[int index]

    {

      get { return (ServiceConfig)BaseGet(index); }

      set

      {

        if (BaseGet(index) != null)

        {

          BaseRemoveAt(index);

        }

        BaseAdd(index, value);

      }

    }


    public void Add(ServiceConfig serviceConfig)

    {

      BaseAdd(serviceConfig);

    }


    public void Clear()

    {

      BaseClear();

    }

我缺少的部分是处理程序要做什么。最初,我尝试实现,IConfigurationSectionHandler但发现了两件事:


它没有用

不推荐使用。

我现在完全不知道该怎么做,所以我可以从config中读取数据。请帮忙!


九州编程
浏览 891回答 3
3回答
随时随地看视频慕课网APP
我要回答