Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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
app.config(C#)中的嵌套自定义元素_C#_Xml_Nested_App Config - Fatal编程技术网

app.config(C#)中的嵌套自定义元素

app.config(C#)中的嵌套自定义元素,c#,xml,nested,app-config,C#,Xml,Nested,App Config,G'da对大家说 几个小时以来,我一直在想如何从文件中读取设置: 问题是当我试图通过GetSection方法获取“Databases”部分时: Configuration Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); DatabaseSection DbConfig = Config.GetSection("Databases") as DatabaseSection; 程序抛出

G'da对大家说

几个小时以来,我一直在想如何从文件中读取设置:

问题是当我试图通过GetSection方法获取“Databases”部分时:

Configuration Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
DatabaseSection DbConfig = Config.GetSection("Databases") as DatabaseSection;
程序抛出一个ConfigurationErrorsException,报告“无法识别的元素‘Database’”,尽管它在通过DatabaseSection的get方法后会这样做,即使我将DatabaseInstanceCollection的AddItemName定义为“Database”。我是否缺少使底层代码正确读取app.config的属性?

强制性链接:

粗略地看一下,您的问题似乎在这一行:

[ConfigurationCollection(typeof(DatabaseElement), AddItemName = "add", CollectionType = ConfigurationElementCollectionType.BasicMap )]
这表示.config文件应如下所示:

<Databases>
    <add><!-- Database goes here --></add>
</Databases>

(我没有机会测试这个,可能还有其他问题)

你说得对,Kragen,我必须删除Table/ColumnSection并将Table/ColumnSinstanceCollection添加到Database/TableElement。DatabaseSection的Databases属性必须类似于:

[ConfigurationProperty("", IsDefaultCollection = true)]
        public DatabaseInstanceCollection Databases
        {
            get { return (DatabaseInstanceCollection)this[""]; }
        }

这么格式化有什么问题?此外,您还需要为此做更多的工作。描述什么对你不起作用以及你的问题是什么。没有人会通读你的代码来找出哪里出了问题。举个失败的例子。你是在问如何使用你定义的类读取配置设置吗?我在您的代码中没有看到任何您实际阅读的内容。如果您想发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!所以,如果你这样做的话,你会很好地格式化和显示它!我向大家道歉,有一段时间没有在论坛上发布问题(主要是因为我回答了其他人的问题),我失去了联系。感谢Kragen,我在这里浏览了与.NET类似的应用程序配置的问答,并访问了您之前提到的链接,但很遗憾。我试图将AddItemName更改为“Database”,但也没有效果。我怀疑必须为“Databases”部分声明“Database”元素,尽管我认为这是通过ConfigurationCollection属性的“AddItemName”属性完成的。@user696034这会对错误消息产生影响吗?我还发现
DatabaseElement
configuration元素没有引用
TableSection
configuration部分,因此我预计即使在解决上述问题后,这也可能会导致失败。我已经设法让整件事顺利进行,但你说得对,Kragen,有必要将TableInstanceCollection添加到DatabaseElement,将ColumnSinstanceCollection添加到TableElement。此外,数据库部分也必须这样做才能工作:
<Databases>
    <add><!-- Database goes here --></add>
</Databases>
[ConfigurationCollection(typeof(DatabaseElement), AddItemName = "Database", CollectionType = ConfigurationElementCollectionType.BasicMap )]
[ConfigurationProperty("", IsDefaultCollection = true)]
        public DatabaseInstanceCollection Databases
        {
            get { return (DatabaseInstanceCollection)this[""]; }
        }