【发布时间】:2014-08-11 05:21:09
【问题描述】:
我有一个类 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,发现这个“特别是,访问网络或文件系统的操作(除了一次初始化)应该很可能是方法,而不是属性。” .现在我有点困惑。请帮忙。
【问题讨论】:
标签: c# methods properties design-guidelines