2014-02-19 30 views
1

我從app.config中讀取一個簡單的集合:將配置節作爲.NET ConfigurationCollection讀取後,是否可以返回不同的類型?

<MongoInstances> 
     <MongoInstance serverAddress="server1" /> 
     <MongoInstance serverAddress="server2" /> 
</MongoInstances> 

爲以下領域

[ConfigurationProperty("MongoInstances")] 
[ConfigurationCollection(typeof(MongoInstancesCollection), AddItemName = "MongoInstance")] 
    public MongoInstancesCollection ServerUrls 
{ ... 
} 

預期其工作,返回在MongoInstancesCollection對象在app.config信息。

我想這個領域是不同的類型和收集對象轉換爲IEnumerable如下:

[ConfigurationProperty("MongoInstances")] 
    [ConfigurationCollection(typeof(MongoInstancesCollection), AddItemName = "MongoInstance")] 
    public IEnumerable<MongoServerAddress> ServerUrls 
    { 
     get 
     { 
      IList<MongoServerAddress> result = new List<MongoServerAddress>(); 
      var collection = (MongoInstancesCollection)this["MongoInstances"]; 
      foreach (MongoInstance instance in collection) 
      { 
       result.Add(new MongoServerAddress(instance.Address)); 
      } 

      return result; 
     } 
    } 

但我得到以下異常:

System.Configuration.ConfigurationErrorsException : Property 'MongoInstances' is not a ConfigurationElement. 

Google搜索它,發現如果我手動設置屬性並從字段定義中刪除ConfigurationProperty屬性,它將消失:

Properties.Add(new ConfigurationProperty("MongoInstances", typeof(MongoInstancesCollection), new MongoInstancesCollection())); 

但現在我得到一個新的異常,我無法弄清楚如何補救:

System.Configuration.ConfigurationErrorsException : Unrecognized element 'MongoInstance' 

任何幫助將不勝感激!謝謝!

回答

相關問題