【问题标题】:Custom Config file with subelements instead of attributes带有子元素而不是属性的自定义配置文件
【发布时间】:2010-08-20 06:14:09
【问题描述】:

我正在制作我的 app.config 和 web.config 的自定义部分以读取配置。我正在关注http://consultingblogs.emc.com/pauloreichert/archive/2005/05/31/1514.aspx 的代码作为我的示例。问题是,我的配置文件生成如下:

<configSections>
    <section name="BizDays" type="Holidays.BizDaysSection, Holidays, Version=1.0.3883.29809, Culture=neutral, PublicKeyToken=null" />
</configSections>
<BizDays>
  <Holidays>
    <Holiday Name="New Years Day" Day="1" Month="1" />
    <Holiday Name="MLK Day" Month="1" DayOfWeek="1" WeekOfMonth="3" />
  </Holidays>
</BizDays>

我想要的是这样的代码:

<BizDays>
  <Holidays>
    <Holiday Name="New Years Day">
      <Day>1</Day>
      <Month>1 </Month>
    </Holiday>
    <Holiday Name="MLK Day">
      <Day>1</Day>
      <DayOfWeek>1</DayOfWeek>
      <WeekOfMonth>3</WeekOfMonth>
    </Holiday>
  </Holidays>
</BizDays>

我在网上找到的示例都没有显示如何做到这一点。

【问题讨论】:

  • 为什么?对我来说似乎很可怕。为什么不只保留实际复杂类型的子元素,而不是简单的字符串或整数?
  • 因为我问是否可以这样做,而不是对布局或配置本身的意见。我为什么会喜欢这种方式可能还有其他因素在起作用。
  • 能否请您发布一些代码,而不是让我们阅读您链接到的文章?

标签: xml xml-serialization web-config app-config


【解决方案1】:

如果不阅读您链接到的文档,名称似乎被正确指定为 XMLAttribute。 Day、DayOfWeek 等应该是 XMLElements。

例如,创建以下类的实例并对其进行序列化会产生您想要的结果:

public class Holiday
{
    [XmlAttribute]
    public string Name;
    [XmlElement]
    public int Day;
    [XmlElement]
    public int Month;
}

由于 XmlElement 是默认值,因此可以不使用它。

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2016-06-11
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多