public void ResolveAndInvoke(string mainModule, string moduleId, Form container) { ClientModuleElement moduleCfg = ConfigInstance.Modules.FirstOrDefault(m => m.Name.Equals(mainModule, StringComparison.InvariantCultureIgnoreCase)); if (moduleCfg == null) { throw new System.Configuration.ConfigurationErrorsException("主模块在模块配置中不存在!"); } SubModuleBuildElement sub = moduleCfg.MoubleBuild.FirstOrDefault(s => s.ModuleId == moduleId); if (sub == null) { throw new System.Configuration.ConfigurationErrorsException("子模块在模块配置中不存在!"); } using (ModuleRunScope scope = new ModuleRunScope()) { scope.SetVariable("mainForm", container); ModuleBuilder.BuildAndInvoke(sub, scope); if (scope.LastError != null) { throw scope.LastError; } } }
public TInstanse Resolve <TInstanse>(string moduleId) { string mainModule = moduleId.Substring(0, 2); ClientModuleElement moduleCfg = ConfigInstance.Modules.FirstOrDefault(m => m.Name.Equals(mainModule, StringComparison.InvariantCultureIgnoreCase)); if (moduleCfg == null) { throw new System.Configuration.ConfigurationErrorsException("主模块在模块配置中不存在!"); } //TODO 模块生命周期配置 return(ModuleBuilder.BuildAndInvoke <TInstanse>(moduleCfg, moduleId)); }
public void ConfigTest() { ContainerConfiguration cfg = new ContainerConfiguration(); List <ClientModuleElement> mList = new List <ClientModuleElement>(); SubModuleBuildElement builder = new SubModuleBuildElement { Type = "DBHR.ClientModule.BaseEditForm, DBHR.ClientModule", ModuleId = "SP1010" }; #region 方法调用 builder.AddStep(new ModuleMethodCallElement { MethodName = "AddMainType", //When = new ConditionalElement { // Executable = false //}, Parameters = new ModuleConstructorElement { Arguments = new TypeValueElement[] { new TypeValueElement { Type = "System.Type", Value = "DBHR.WinFormUnity.TestModule1, DBHR.WinFormUnity" } } } }); builder.AddStep(new ModuleMethodCallElement { MethodName = "AddMainType", Parameters = new ModuleConstructorElement { Arguments = new TypeValueElement[] { new TypeValueElement { Type = "System.Type", Value = "DBHR.WinFormUnity.TestModule2, DBHR.WinFormUnity" } } } }); builder.AddStep(new ModuleMethodCallElement { MethodName = "AddDetailType", Parameters = new ModuleConstructorElement { Arguments = new TypeValueElement[] { new TypeValueElement { Type = "System.Type", Value = "DBHR.WinFormUnity.TestModule1, DBHR.WinFormUnity" }, new TypeValueElement { Type = "System.Type", Value = "DBHR.WinFormUnity.TestModule2, DBHR.WinFormUnity" } } } }); builder.AddStep(new ModuleMethodCallElement { MethodName = "DoCreateFormControls" }); #endregion #region 属性设置 builder.AddStep(new ModulePropertyElement { Name = "MdiParent", Value = "$mainForm" }); #endregion #region 方法调用 builder.AddStep(new ModuleMethodCallElement { MethodName = "Show" }); #endregion ClientModuleElement m = new ClientModuleElement() { Name = "SP", Type = "DBHR.ClientModule.StartUpModule, DBHR.ClientModule", MoubleBuild = new SubModuleBuildElement[] { builder } }; mList.Add(m); cfg.Modules = mList.ToArray(); XmlDocument xDoc = cfg.GetXmlDoc(true); var xmlstr = cfg.GetXmlDocString(true); //cfg.GetXmlDoc().WriteIndentedContent(Console.Out); var cfgObj = xDoc.GetObject <ContainerConfiguration>(); string xmlStr2 = cfgObj.GetXmlDocString(true); Assert.AreEqual(xmlstr.XmlUtf8BOMClear(), xmlStr2.XmlUtf8BOMClear()); }