C# 在将配置节作为.NET ConfigurationCollection读取后,是否可以返回其他类型?
我正在阅读app.config中的一个简单集合:C# 在将配置节作为.NET ConfigurationCollection读取后,是否可以返回其他类型?,c#,.net,collections,configuration,app-config,C#,.net,Collections,Configuration,App Config,我正在阅读app.config中的一个简单集合: <MongoInstances> <MongoInstance serverAddress="server1" /> <MongoInstance serverAddress="server2" /> </MongoInstances> 按预期工作,在MongoInstancesCollection对象中返回app.config信息 我希望此字段为其他类型,并将集合对象转换
<MongoInstances>
<MongoInstance serverAddress="server1" />
<MongoInstance serverAddress="server2" />
</MongoInstances>
按预期工作,在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;
}
}
谷歌搜索发现,如果我手动设置属性并从字段定义中删除ConfigurationProperty属性,它就会消失:
Properties.Add(new ConfigurationProperty("MongoInstances", typeof(MongoInstancesCollection), new MongoInstancesCollection()));
但现在我遇到了一个新的异常,我无法想出如何补救:
System.Configuration.ConfigurationErrorsException : Unrecognized element 'MongoInstance'
任何帮助都将不胜感激!谢谢 尝试类似的操作,并让MangoInstancesCollection从ConfigurationElementCollection和IEnumerable继承。我的集合已实现IEnumerable。另外,在您引用的博客文章中,作者仍然将ConfigurationElementCollection作为其集合的返回类型,这正是我试图避免的。
Properties.Add(new ConfigurationProperty("MongoInstances", typeof(MongoInstancesCollection), new MongoInstancesCollection()));
System.Configuration.ConfigurationErrorsException : Unrecognized element 'MongoInstance'