我有一个类 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,发现这个“特别是访问网络或文件系统的操作(除了一次初始化) 应该很可能是方法,而不是属性。”。现在我有点困惑。请帮忙。