Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义app.config节错误";无法识别的元素添加";_C#_Wpf_App Config - Fatal编程技术网

C# 自定义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" ?> &

我有一个小应用程序,它可以在SQL Server数据库中的所有可用字段中搜索给定值。其中一部分是一个自定义app.config节,用于保存所有这些字段。但是,我在应用程序的这一行上遇到了一个错误:

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,谢谢你的建议,但这也不能解决问题。