31

このようなapp.configを使用した場合、System.Configuration.Sectionから継承するクラスを介して「ページ」のリストを取得する正しい方法は何ですか?

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

  <configSections>
    <section name="XrbSettings" type="Xrb.UI.XrbSettings,Xrb.UI" />
  </configSections>

  <XrbSettings>
    <pages>
      <add title="Google" url="http://www.google.com" />
      <add title="Yahoo" url="http://www.yahoo.com" />
    </pages>
  </XrbSettings>

</configuration>
4

1 に答える 1

30

まず、Section を拡張するクラスにプロパティを追加します。

[ConfigurationProperty("pages", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(PageCollection), AddItemName = "add")]
public PageCollection Pages {
    get {
        return (PageCollection) this["pages"];
    }
}

次に、PageCollection クラスを作成する必要があります。私が見たすべての例はほとんど同じなので、これをコピーて名前を「NamedService」から「Page」に変更してください。

最後に、ObjectConfigurationElement を拡張するクラスを追加します。

public class PageElement : ObjectConfigurationElement {
    [ConfigurationProperty("title", IsRequired = true)]
    public string Title {
        get {
            return (string) this["title"];
        }
        set {
            this["title"] = value;
        }
    }

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

サンプル実装のいくつかのファイルを次に示します。

于 2009-04-17T04:26:31.663 に答える