为什么ConfigurationSection需要用字符串查找?

Mar*_*ius 3 .net c# configurationsection

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

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

为什么使用方括号从基数访问值"Servers"?是从xml创建此对象时使用的setter,还是用于覆盖xml文件中的值的setter?如果是这样,为什么在此属性上设置属性?

Cod*_*ter 8

为什么使用方括号从基数访问值"Servers"?

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

因此它公开了一个字符串索引器:this[string]它允许您访问从配置中读取的值.

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