c# - 为什么 ConfigurationSection 需要使用字符串查找内容?

标签 c# .net configurationsection

我在网上找到的 ConfigurationSection 示例 ( for example ) 都有如下代码:

public class ConnectionSection  : ConfigurationSection
{
    [ConfigurationProperty("Servers")]
    public ServerAppearanceCollection ServerElement
    {
        get { return ((ServerAppearanceCollection)(base["Servers"])); }
        set { base["Servers"] = value; }
    }
}

为什么它使用方括号从基础访问值“Servers”?是从xml创建这个对象时使用的setter,还是用来覆盖xml文件中的值的setter?如果是,为什么要在此属性上设置属性?

最佳答案

Why is it accessing the value "Servers" from the base using the square brackets?

因为基类 ConfigurationSection 不知道它的继承者要实现什么属性。

所以它公开了a string indexer: this[string]这使您可以访问从配置中读取的值。

这是一个设计决定。 .NET 团队也可以选择使用反射来获取和设置继承者的属性,但决定不这样做。 (好吧,当然,在配置部分中有很多反射(reflection),但直到 public ServerAppearanceCollection ServerElement { get; set; } 会起作用为止)。

关于c# - 为什么 ConfigurationSection 需要使用字符串查找内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32396189/

相关文章:

.net - 需要创建一个也保存类型的动态 ConfigurationSection

c# - 拒绝访问此目录

c# - 实现通用接口(interface)方法的方法中的专用类型

c# - "The SMTP host was not specified."- 但它是指定的?

java - 调用soap webservice时出现异常

.net - 我应该打印异常堆栈跟踪吗?

具有不同运行时的 C# While 循环

c# - 有没有办法在所有构造函数运行后立即自动调用特定方法?

c# - 如何获取 NameValueSectionHandler 类型的 ConfigurationSection 的值

smtp - 需要在 IIS 上为 ASP.Net Core 身份服务器配置 SMTP 设置以进行电子邮件验证