Example #1
0
        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();
        }
Example #2
0
        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();
        }