/// <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); }
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); }
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); }
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); }
/// <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)); }
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; }