internal static void LockPlugins() { //所有插件(其中,DomainPlugins 在列表的前面,UIPlugins 在列表的后面。) _allPlugins = new PluginCollection(); //domain plugins. #if NET45 var configPlugins = Configuration.Section.DomainPlugins.OfType <PluginElement>().Select(e => e.Plugin).ToArray(); #endif #if NS2 var configPlugins = Configuration.Section.DomainPlugins; #endif if (configPlugins != null && configPlugins.Length > 0) { InitPluginsByConfig(_domainPlugins, configPlugins); } _domainPlugins.Insert(0, new Rafy.Domain.RafyDomainPlugin()); _domainPlugins.Lock(); foreach (var item in _domainPlugins) { _allPlugins.Add(item); } //ui plugins. if (_location.IsUI) { #if NET45 configPlugins = Configuration.Section.UIPlugins.OfType <PluginElement>().Select(e => e.Plugin).ToArray(); #endif #if NS2 configPlugins = Configuration.Section.UIPlugins; #endif if (configPlugins != null && configPlugins.Length > 0) { InitPluginsByConfig(_uiPlugins, configPlugins); } if (_location.IsWPFUI) { _uiPlugins.Insert(0, LoadRafyPlugin("Rafy.WPF")); } _uiPlugins.Lock(); foreach (var item in _uiPlugins) { _allPlugins.Add(item); } } CheckDuplucatePlugins(); _allPlugins.Lock(); }
internal static void CreateStartupPlugins() { //所有插件(其中,DomainPlugins 在列表的前面,UIPlugins 在列表的后面。) //domain plugins. IPluginConfig[] configPlugins = GetDomainPluginsConfig(); CreateStartupPluginsByConfig(_domainPlugins, configPlugins); _domainPlugins.Insert(0, new Rafy.Domain.RafyDomainPlugin());//其实这里不应该使用上层的类,但是内部为了简单实现,且效率更高。 _domainPlugins.Lock(); foreach (var item in _domainPlugins) { _allPlugins.Add(item); } //ui plugins. if (_location.IsUI) { configPlugins = GetUIPluginsConfig(); CreateStartupPluginsByConfig(_uiPlugins, configPlugins); //if (_location.IsWPFUI) //{ // _uiPlugins.Insert(0, CreatePlugin("Rafy.WPF.RafyWPFPlugin, Rafy.WPF")); // //_uiPlugins.Insert(0, LoadRafyPlugin("Rafy.WPF")); //} _uiPlugins.Lock(); foreach (var item in _uiPlugins) { _allPlugins.Add(item); } } CheckDuplucatePlugins(); _allPlugins.Lock(); }