根據這個經常被引用的文章,Unraveling the Mysteries of .NET Configuration,實施的ConfigurationSection的時候/的ConfigurationElement,建議遵循這個模式:ConfigurationPropertyCollection需要是靜態的嗎?
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
場是不是靜態的......)
那麼,是否有一些「隱藏」直接訪問靜態字段?是不是繼續創建並重新創建了對象,這樣對象級別的字段就會丟失,因此效率低下?
或者,將ConfigurationPropertyCollection
作爲非靜態存儲和初始化是否完全正常?
你試過了嗎? – svick 2011-06-12 14:54:34
@svick,是的,我試過了,它*似乎*工作正常。但是,我不知道「底層」是怎麼回事,如果這對性能有影響的話。所以也許真正的問題是「爲什麼該文章使用靜態」...... – AviD 2011-06-12 14:58:46