예제 #1
0
        /// <summary>
        ///     向UI窗口里插入一个可智能查询的View
        /// </summary>
        /// <param name="dockableManager"></param>
        /// <param name="plugin"></param>
        /// <param name="model"></param>
        /// <param name="bindingAction"></param>
        public static object AddCusomView(IDockableManager dockableManager, string pluginName, IView model)
        {
            if (dockableManager == null || model == null)
            {
                return(null);
            }
            object   view1 = model.UserControl;
            FrmState frm;

            frm = model.FrmState;

            XFrmWorkAttribute first = PluginProvider.GetFirstPlugin(typeof(ICustomView), pluginName);

            if (first != null)
            {
                var view2 = PluginProvider.GetObjectInstance(first.MyType) as ICustomView;
                if (view2 != null)
                {
                    view1 = view2;
                    frm   = view2.FrmState;
                }
            }
            if (view1 == null)
            {
                return(null);
            }
            XFrmWorkAttribute attr = PluginProvider.GetPluginAttribute(model.GetType());

            dockableManager.AddDockAbleContent(
                frm, view1, new[] { pluginName, attr.LogoURL, attr.Description });
            dockableManager.ViewDictionary.Last().Model = model;
            return(view1);
        }
예제 #2
0
        public static XFrmWorkAttribute GetFirstPluginAttr(Type interfaceName, string name = null)
        {
            var plugins             = GetPluginCollection(interfaceName);
            XFrmWorkAttribute first = null;

            first = name != null
                ? plugins.Where(d => d.Name == name).OrderByDescending(d => d.GroupName).FirstOrDefault()
                : plugins.OrderByDescending(d => d.GroupName).FirstOrDefault();

            return(first);
        }
예제 #3
0
        private IXPlugin AddNewPlugin(XFrmWorkAttribute describe)
        {
            if (this.MainFrmUI.PluginDictionary.ContainsKey(describe.Name))
            {
                XLogSys.Print.Error($"插件类型{describe.Name}发现重复,请检查配置文件");
                return(null);
            }
            var plugin = PluginProvider.GetObjectInstance(describe.MyType) as IXPlugin;

            this.MainFrmUI.PluginDictionary.Add(describe.Name, plugin);

            if (plugin != null)
            {
                plugin.MainFrmUI = this.MainFrmUI;
            }

            XLogSys.Print.Info(plugin.TypeName + "已成功初始化");

            return(plugin);
        }
예제 #4
0
        private IXPlugin AddNewPlugin(XFrmWorkAttribute describe)
        {
            if (this.MainFrmUI.PluginDictionary.ContainsKey(describe.Name))
            {
                XLogSys.Print.Error(GlobalHelper.Get("key_148") + describe.Name);
                return(null);
            }
            var plugin = PluginProvider.GetObjectInstance(describe.MyType) as IXPlugin;

            this.MainFrmUI.PluginDictionary.Add(plugin.GetType().Name, plugin);

            if (plugin != null)
            {
                plugin.MainFrmUI = this.MainFrmUI;
            }

            XLogSys.Print.Info(plugin.TypeName + GlobalHelper.Get("key_149"));

            return(plugin);
        }
예제 #5
0
        /// <summary>
        ///     查找一个不带接口约束的实例
        /// </summary>
        /// <param name="pluginType"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public static object GetObjectInstance(string pluginName)
        {
            XFrmWorkAttribute attr = null;

            foreach (var r in PluginDictionary)
            {
                foreach (var t in r.Value)
                {
                    if (t.Name == pluginName)
                    {
                        attr = t;
                        break;
                    }
                }
            }
            if (attr == null)
            {
                return(null);
            }
            return(GetObjectInstance(attr.MyType));
        }
예제 #6
0
        private IXPlugin AddNewPlugin(XFrmWorkAttribute describe)
        {
            if (this.MainFrmUI.PluginDictionary.ContainsKey(describe.Name))
            {

              XLogSys.Print.Error($"插件类型{describe.Name}发现重复,请检查配置文件");
                return null;
            }
            var plugin = PluginProvider.GetObjectInstance(describe.MyType) as IXPlugin;

            this.MainFrmUI.PluginDictionary.Add(describe.Name, plugin);

            if (plugin != null)
            {
                plugin.MainFrmUI = this.MainFrmUI;
            }

            XLogSys.Print.Info(plugin.TypeName + "已成功初始化");

            return plugin;
        }