2009-04-17 14 views
26

私はこのようにはapp.configを使用した場合System.Configuration.Sectionから継承したクラスを経由して「ページ」のリストをピックアップする正しい方法は何ですか?カスタムapp.configをコンフィグセクションハンドラ

<?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> 

答えて

26

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

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

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

最後に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; 
     } 
    } 
} 

はサンプル実装からいくつかのファイルがあります

+0

リンクは、別のサンプル実装をしたい場合、私はここに1を作った時 – Hoppe

+0

@Hoppe上で壊れている:http://stackoverflow.com/a/33544322/1955317 – Squazz

3

、あなたがConfiguration Section Designer、コンフィギュレーション・セクションを設計するためのグラフィカルなドメイン固有言語デザイナーがあります、自分が頻繁に設定セクションを作成見つけた場合。

関連する問題