gpt4 book ai didi

c# - ConfigurationSections 我哪里出错了?

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:30 26 4
gpt4 key购买 nike

<分区>

我正在尝试实现一个自定义配置部分,以便我可以加载用户定义的项目列表,但运气不佳。我已经阅读了以下帖子,但我仍然无法弄清楚我做错了什么。他们似乎是很好的向导,但我在这里遗漏了一些重要的事实。我希望有人能指出确切的内容。

这是我的测试。当我单步执行它时,config 保持为空。这就像对 GetSection 的调用根本不执行任何操作。

[TestClass]
public class ToDoConfigTests
{
[TestMethod]
public void TestGetTodoAttribute()
{
var config = ConfigurationManager.GetSection("ToDoListAttributesSection") as ToDoItemsConfigurationSection;

Assert.Fail();

}
}

我的配置类:

using System.Configuration;
using Rubberduck.ToDoItems;

namespace Rubberduck.Config
{

public class ToDoItemsConfigurationCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new ToDoListAttributeElement();
}

protected override object GetElementKey(ConfigurationElement element)
{
return ((ToDoListAttributeElement)element).Comment;
}
}

public class ToDoItemsConfigurationSection : ConfigurationSection
{
[ConfigurationProperty("ToDoListAttributes", IsRequired = true, IsDefaultCollection=true)]
public ToDoItemsConfigurationCollection ToDoListAttributes
{
get { return (ToDoItemsConfigurationCollection)this["ToDoListAttributes"]; }
set { this["ToDoListAttributes"] = value; }
}
}

public class ToDoListAttributeElement : ConfigurationElement
{
[ConfigurationProperty("TaskPriority", DefaultValue = TaskPriority.Low, IsRequired = true)]
public TaskPriority Priority
{
get { return (TaskPriority)this["TaskPriority"]; }
set { this["TaskPriority"] = value; }
}

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

最后,app.config 文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Rubberduck.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
<section name="ToDoListAttributesSection" type="Rubberduck.Config.ToDoItemsConfigurationSection, Rubberduck.Config"/>
</configSections>
<ToDoListAttributesSection>
<ToDoListAttributes>
<add Comment="note" TaskPriority="0" />
<add Comment="todo" TaskPriority="1" />
<add Comment="bug" TaskPriority="2"/>
</ToDoListAttributes>
</ToDoListAttributesSection>
</configuration>

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com