Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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());
        }