【问题标题】:Understanding .NET configuration file scheme了解 .NET 配置文件方案
【发布时间】:2011-10-19 09:24:42
【问题描述】:

我对 .Net 中的配置文件有一些困难:我完全理解它的本质以及它们有什么好处,但我想念的部分是:配置文件是 xml 文件,它在运行时反序列化为托管对象(或 OBJECTS? ??) 在托管堆上。但那些对象是谁?

为了澄清我的问题,我将举一个具体的例子: 如果我编写 WCF 服务,我可以使用 System.serviceModel 元素配置我的服务。

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <!-- and this is wherer the service configuration goes... -->
  </system.serviceModel>
</configuration>

现在,我如何使用通过代码访问此对象?对象的名称和类型是什么?我在考虑 ConfigurationManager - 但它不在那里。

顺便说一句,如果你想知道,我觉得这个问题如此相关的原因是:如果我知道配置文件的方案,我就会知道如何最好地利用它......

【问题讨论】:

    标签: .net app-config configuration-files


    【解决方案1】:

    根元素对应Configuration类并反序列化为它。

    它包含许多不同的其他可能元素和一些可自定义的部分,通常带有 ConfigurationSection 类,可以从中继承和使用。

    system.serviceModel 部分只是这样的部分 - 您可以找到有关元素本身 here 以及它反序列化为的对象的更多信息 - ServiceModelConfigurationGroup

    ConfigurationManager 是一个静态类,提供对反序列化配置的访问(例如,您可以使用 GetSection 方法获取配置部分)。

    【讨论】:

    • 感谢您的回答。我还有一些问题:哪些类型继承自 ConfigurationSection?我怎么知道 system.serviceModel 部分反序列化为 ServiceModelConfigurationGroup 类型?不是我不相信你,只是我以后还想知道其他部分:)
    • @ET - 转到 MSDN 页面并单击“继承层次结构”下的 more... 链接以查看从中继承的内容。您还可以编写不会在 MSDN 上列出的自定义。至于确定...查看上面链接的配置元素的文档。
    • 我知道如何查看派生类型,但我无法在它们之间找到 ServiceModel。我要问的是——从 ConfigurationSection 派生的适合 System.ServiceModel 部分的类型是什么?
    • @ET - 如果您查看文档,您会看到类和元素文档一致(具有相同的命名属性和相同的类型)。配置部分将在某处注册 - 可能在机器范围的网络配置中(也将具有类型),尽管它可能会被烘焙到运行时,在这种情况下我不知道如何证明它......
    【解决方案2】:

    所有配置部分都由“配置部分处理程序”处理。所有这些都需要在配置文件的&lt;configSections&gt;http://msdn.microsoft.com/en-us/library/ms228256.aspx 元素中指定。如果它们没有在那里定义,它们已经在 machine.config 或全局 web.config 文件中定义。

    你可以在System.Configuration DLL 中找到System.Configuration.ConfigurationManager 作为一个类,它是.NET 框架的一部分(这有点令人困惑,因为一些System.Configuration 命名空间已经在System DLL 中声明了,但要获取System.Configuration.ConfigurationManager,则需要引用System.Configuration.dll

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      相关资源
      最近更新 更多