我有一个名为PluginProvider的类,它使用PluginLoader组件从文件系统中加载插件(管理/本地)。在PluginProvider类中,当前定义了一个名为“PluginTypes”的属性,该属性在get()时调用“InitializePlugins”实例方法。
class PluginProvider
{
IEnumerable<IPluginType> PluginTypes
{
get
{
//isInitialized is set inside InitializePlugins method
if(!isInitialized)
{
InitializePlugins(); //contains thread safe code
}
//_pluginTypes is set within InitializePlugins method
return _pluginTypes;
}
}
}
我正准备重构这段代码。我想知道在属性中进行这种初始化是否可行。我知道不应在属性中执行繁重的操作。但是,当我查看此链接:http://msdn.microsoft.com/en-us/library/vstudio/ms229054.aspx,发现“特别是访问网络或文件系统的操作(除了初始化外)应该是方法,而不是属性。” 现在我有点困惑,请帮忙。