【发布时间】:2011-06-12 14:45:35
【问题描述】:
根据这篇经常引用的文章Unraveling the Mysteries of .NET Configuration,在实现 ConfigurationSection / ConfigurationElement 时,建议遵循以下模式:
private static ConfigurationPropertyCollection s_properties;
static ExampleSection()
{
// Predefine properties here
// Add the properties to s_properties
}
/// Override the Properties collection and return our custom one.
protected override ConfigurationPropertyCollection Properties
{
get { return s_properties; }
}
但它没有解释为什么s_properties 字段需要是静态的,并且属性需要在静态构造函数中初始化。
毕竟,它只能通过非静态的Properties 覆盖属性访问...
(我有一套复杂的自定义配置管理,它会大大简化 s_properties 字段不是静态的事情......)
那么,是否有一些直接访问静态字段的“隐藏”访问? Configuration*** 对象是否会不断地创建和重新创建,从而导致对象级字段丢失,从而导致效率低下?
或者将ConfigurationPropertyCollection 存储和初始化为非静态是否完全可以?
【问题讨论】:
-
@svick,是的,我已经尝试过了,它似乎工作正常。但是,我不知道“幕后”发生了什么,以及这是否会影响性能。所以也许真正的问题是“为什么文章使用静态”......
标签: c# .net configuration