C# 自定义app.config节错误";无法识别的元素添加";
我有一个小应用程序,它可以在SQL Server数据库中的所有可用字段中搜索给定值。其中一部分是一个自定义app.config节,用于保存所有这些字段。但是,我在应用程序的这一行上遇到了一个错误:C# 自定义app.config节错误";无法识别的元素添加";,c#,wpf,app-config,C#,Wpf,App Config,我有一个小应用程序,它可以在SQL Server数据库中的所有可用字段中搜索给定值。其中一部分是一个自定义app.config节,用于保存所有这些字段。但是,我在应用程序的这一行上遇到了一个错误: var section = (DatabaseFieldSection)ConfigurationManager.GetSection("DatabaseFields"); app.config: <?xml version="1.0" encoding="utf-8" ?> &
var section = (DatabaseFieldSection)ConfigurationManager.GetSection("DatabaseFields");
app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="DatabaseFields" type="PartyFinder.DataAccess.DatabaseFieldSection, DataAccess"/>
</configSections>
<connectionStrings>
<!-- Data removed for security purposes -->
</connectionStrings>
<DatabaseFields>
<add Key="Person.FirstName (SV)" TableName="dbo.Person" ColumnName="FirstName" FieldType="SV" />
</DatabaseFields>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
我已经做了大量的搜索,但到目前为止没有任何结果。任何建议都将不胜感激 通过添加父
DatabaseConfig
节点,我成功地在控制台应用程序中实现了以下功能:
数据库字段部分
类:
public class DatabaseFieldSection : ConfigurationSection
{
public static DatabaseFieldSection GetConfig()
{
return (DatabaseFieldSection)System.Configuration.ConfigurationManager.GetSection("DatabaseConfig") ?? new DatabaseFieldSection();
}
[System.Configuration.ConfigurationProperty("DatabaseFields")]
[ConfigurationCollection(typeof(DatabaseFieldCollection), AddItemName = "add")]
public DatabaseFieldCollection DatabaseFields
{
get
{
object o = this["DatabaseFields"];
return o as DatabaseFieldCollection;
}
}
}
以及App.config
:
<configSections>
<section name="DatabaseConfig" type="TestEnvironment.DBConfig.DatabaseFieldSection, TestEnvironment"/>
</configSections>
<DatabaseConfig>
<DatabaseFields>
<add Key="Person.FirstName (SV)" TableName="dbo.Person" ColumnName="FirstName" FieldType="SV" />
</DatabaseFields>
</DatabaseConfig>
似乎config
不能与config元素集合名称相同。e、 g数据库字段
,它需要:
章节>收藏>项目
或:
数据库配置>数据库字段>添加
通过添加父
DatabaseConfig
节点,我成功地在控制台应用程序中实现了以下功能:
数据库字段部分
类:
public class DatabaseFieldSection : ConfigurationSection
{
public static DatabaseFieldSection GetConfig()
{
return (DatabaseFieldSection)System.Configuration.ConfigurationManager.GetSection("DatabaseConfig") ?? new DatabaseFieldSection();
}
[System.Configuration.ConfigurationProperty("DatabaseFields")]
[ConfigurationCollection(typeof(DatabaseFieldCollection), AddItemName = "add")]
public DatabaseFieldCollection DatabaseFields
{
get
{
object o = this["DatabaseFields"];
return o as DatabaseFieldCollection;
}
}
}
以及App.config
:
<configSections>
<section name="DatabaseConfig" type="TestEnvironment.DBConfig.DatabaseFieldSection, TestEnvironment"/>
</configSections>
<DatabaseConfig>
<DatabaseFields>
<add Key="Person.FirstName (SV)" TableName="dbo.Person" ColumnName="FirstName" FieldType="SV" />
</DatabaseFields>
</DatabaseConfig>
似乎config
不能与config元素集合名称相同。e、 g数据库字段
,它需要:
章节>收藏>项目
或:
数据库配置>数据库字段>添加
自OP定义以来,
[ConfigurationCollection(typeof(DatabaseFieldCollection)),AddItemName=“add”
,我认为它应该以他的方式工作…@DGibbs,我还没有尝试过,所以谢谢你的想法,但它没有工作。@StevenBall设法让它工作-请参阅我的编辑。@DGibbs,是的,在我的应用程序中也工作了。非常感谢!你不必为集合设置节点。简单地使用base[“”]而不是base[“DatabaseFields”]。请参见我的答案-自OP定义以来[ConfigurationCollection(typeof(DatabaseFieldCollection),AddItemName=“add”
,我认为它应该以他的方式工作…@DGibbs,我还没有尝试过,所以谢谢你的想法,但它没有工作。@StevenBall设法让它工作-请参阅我的编辑。@DGibbs,是的,在我的应用程序中也工作了。非常感谢!你不必为集合设置节点。简单地使用base[“”]而不是base[“DatabaseFields”].请看我的答案-唯一让我印象深刻的是,您调用了return((DatabaseFieldCollection)base[“DatabaseFields”]);
-->base可能引用ConfigurationSection基类而不是DatabaseFieldSection类。请在此处将base
与this
交换,然后告诉我它是否有效。@blas3nik,谢谢你的建议,但这也不能解决它。唯一让我感到突出的是你调用return((DatabaseFieldCollection)base[“DatabaseFields”];
-->base可能引用ConfigurationSection基类而不是DatabaseFieldSection类。在此处将base
与this
交换,并告诉我它是否有效。@blas3nik,谢谢你的建议,但这也不能解决问题。