protected override void GenerateTransformCode(string directiveName, System.Text.StringBuilder codeBuffer, System.CodeDom.Compiler.CodeDomProvider languageProvider, System.Collections.Generic.IDictionary<string, string> requiresArguments, System.Collections.Generic.IDictionary<string, string> providesArguments)
        {
            base.GenerateTransformCode(directiveName, codeBuffer, languageProvider, requiresArguments, providesArguments);

            System.CodeDom.CodeMemberField codeMemberField = null;
            if (!System.String.IsNullOrEmpty(providesArguments["GeneratedResourceName"]))
            {
                codeMemberField = new System.CodeDom.CodeMemberField(new System.CodeDom.CodeTypeReference(typeof(string)), providesArguments["GeneratedResourceName"]);
                codeMemberField.Attributes = System.CodeDom.MemberAttributes.Abstract | System.CodeDom.MemberAttributes.Override | System.CodeDom.MemberAttributes.FamilyAndAssembly | System.CodeDom.MemberAttributes.FamilyOrAssembly;
                string s = requiresArguments["ProjectDefaultNamespace"];
                if (!System.String.IsNullOrEmpty(requiresArguments["GeneratedCodeFolder"]))
                {
                    if (!System.String.IsNullOrEmpty(s))
                        s += ".";
                    s += requiresArguments["GeneratedCodeFolder"];
                }
                if (!System.String.IsNullOrEmpty(requiresArguments["GeneratedResourceFile"]))
                {
                    if (!System.String.IsNullOrEmpty(s))
                        s += ".";
                    s += requiresArguments["GeneratedResourceFile"];
                }
                codeMemberField.InitExpression = new System.CodeDom.CodePrimitiveExpression(s);

                System.CodeDom.Compiler.CodeGeneratorOptions codeGeneratorOptions = new System.CodeDom.Compiler.CodeGeneratorOptions();
                codeGeneratorOptions.BlankLinesBetweenMembers = true;
                codeGeneratorOptions.IndentString = "    ";
                codeGeneratorOptions.VerbatimOrder = true;
                codeGeneratorOptions.BracingStyle = "C";
                using (System.IO.StringWriter stringWriter = new System.IO.StringWriter(codeBuffer, System.Globalization.CultureInfo.InvariantCulture))
                {
                    if (codeMemberField != null)
                        languageProvider.GenerateCodeFromMember(codeMemberField, stringWriter, codeGeneratorOptions);
                }
            }
            if (!System.String.IsNullOrEmpty(providesArguments["GeneratedNamespace"]))
            {
                codeMemberField = new System.CodeDom.CodeMemberField(new System.CodeDom.CodeTypeReference(typeof(string)), providesArguments["GeneratedNamespace"]);
                codeMemberField.Attributes = System.CodeDom.MemberAttributes.Abstract | System.CodeDom.MemberAttributes.Override | System.CodeDom.MemberAttributes.FamilyAndAssembly | System.CodeDom.MemberAttributes.FamilyOrAssembly;
                string s = requiresArguments["ProjectDefaultNamespace"];
                codeMemberField.InitExpression = new System.CodeDom.CodePrimitiveExpression(s);

                System.CodeDom.Compiler.CodeGeneratorOptions codeGeneratorOptions = new System.CodeDom.Compiler.CodeGeneratorOptions();
                codeGeneratorOptions.BlankLinesBetweenMembers = true;
                codeGeneratorOptions.IndentString = "    ";
                codeGeneratorOptions.VerbatimOrder = true;
                codeGeneratorOptions.BracingStyle = "C";
                using (System.IO.StringWriter stringWriter = new System.IO.StringWriter(codeBuffer, System.Globalization.CultureInfo.InvariantCulture))
                {
                    if (codeMemberField != null)
                        languageProvider.GenerateCodeFromMember(codeMemberField, stringWriter, codeGeneratorOptions);
                }
            }

        }
Esempio n. 2
0
		} // end private string BuildCodeBehind()
		
		/// <summary>
		/// Generate the declaration for all WebControls that are stored in the Arraylist _WebControls.
		/// </summary>
		/// <param name="typeDeclaration"></param>
		private void GenerateFields(System.CodeDom.CodeTypeDeclaration typeDeclaration)
		{
			System.CodeDom.CodeMemberField memberField;
			
			foreach(System.Web.UI.Control webControl in this._WebControls)
			{
				memberField = new System.CodeDom.CodeMemberField(webControl.GetType(), webControl.ID);
				memberField.Attributes = System.CodeDom.MemberAttributes.Family;
				typeDeclaration.Members.Add(memberField);
			} // end foreach(System.Web.UI.WebControls.WebControl webControl in this._WebControls)
			
			// The following placeholder declaration is required by the Web Form Designer.
			// it is only necessary for Vb.Net
			if(this._SourceLanguage == suite4.net.WinForms2WebForms.SourceLanguages.VbNet)
			{
				memberField = new System.CodeDom.CodeMemberField(typeof(System.Object), "designerPlaceholderDeclaration");
				memberField.Attributes = System.CodeDom.MemberAttributes.Family;
				typeDeclaration.Members.Add(memberField);
			} // end if(this._SourceLanguage == suite4.net.WinForms2WebForms.SourceLanguages.VbNet)
		} // end private void GenerateFields(System.CodeDom.CodeTypeDeclaration typeDeclaration)
Esempio n. 3
0
        public static void GetGatherDataValueCodeStatement(System.CodeDom.CodeStatementCollection codeStatementCollection, string name, System.CodeDom.CodeExpression valueExp, string valueType, CodeGenerateSystem.Base.GenerateCodeContext_Method context)
        {
            // 指针类型不生成收集代码
            if (valueType.Contains("*"))
            {
                return;
            }

            // 收集debug用数据
            if (!mDebugValueFieldDic.ContainsKey(name))
            {
                var field = new System.CodeDom.CodeMemberField(valueType, name);
                field.Attributes = System.CodeDom.MemberAttributes.Public;
                context.ClassContext.DebugContextClass.Members.Add(field);
                mDebugValueFieldDic[name] = field;
            }

            // 代码: Debugger.XXX = XXX;
            codeStatementCollection.Add(new System.CodeDom.CodeAssignStatement(
                                            new System.CodeDom.CodeFieldReferenceExpression(new System.CodeDom.CodeVariableReferenceExpression("mDebuggerContext"), name),
                                            //new CodeGenerateSystem.CodeDom.CodeCastExpression(valueType, valueExp)));
                                            valueExp));

            //// 代码:EngineNS.Editor.Runner.RunnerManager.Instance.GatherDataValue(id, name, value, valueType, canChangeValue)
            //var methodExp = new System.CodeDom.CodeExpressionStatement(
            //                new System.CodeDom.CodeMethodInvokeExpression(
            //                        new System.CodeDom.CodeVariableReferenceExpression("EngineNS.Editor.Runner.RunnerManager.Instance"),
            //                        "GatherDataValue",
            //                        new System.CodeDom.CodeExpression[] {
            //                                                new System.CodeDom.CodeSnippetExpression("EngineNS.Rtti.RttiHelper.GuidTryParse(\"" + id.ToString() + "\")"),
            //                                                new System.CodeDom.CodePrimitiveExpression(name),
            //                                                new CodeGenerateSystem.CodeDom.CodeCastExpression(valueType, valueExp),
            //                                                new System.CodeDom.CodeTypeOfExpression(valueType),
            //                                                new System.CodeDom.CodePrimitiveExpression(canChangeValueWhenDebug),
            //                        }));
            //codeStatementCollection.Add(methodExp);
        }
Esempio n. 4
0
        protected override void GenerateTransformCode(string directiveName, System.Text.StringBuilder codeBuffer, System.CodeDom.Compiler.CodeDomProvider languageProvider, System.Collections.Generic.IDictionary <string, string> requiresArguments, System.Collections.Generic.IDictionary <string, string> providesArguments)
        {
            base.GenerateTransformCode(directiveName, codeBuffer, languageProvider, requiresArguments, providesArguments);

            System.CodeDom.CodeMemberField codeMemberField = null;
            if (!System.String.IsNullOrEmpty(providesArguments["GeneratedResourceName"]))
            {
                codeMemberField            = new System.CodeDom.CodeMemberField(new System.CodeDom.CodeTypeReference(typeof(string)), providesArguments["GeneratedResourceName"]);
                codeMemberField.Attributes = System.CodeDom.MemberAttributes.Abstract | System.CodeDom.MemberAttributes.Override | System.CodeDom.MemberAttributes.FamilyAndAssembly | System.CodeDom.MemberAttributes.FamilyOrAssembly;
                string s = requiresArguments["ProjectDefaultNamespace"];
                if (!System.String.IsNullOrEmpty(requiresArguments["GeneratedCodeFolder"]))
                {
                    if (!System.String.IsNullOrEmpty(s))
                    {
                        s += ".";
                    }
                    s += requiresArguments["GeneratedCodeFolder"];
                }
                if (!System.String.IsNullOrEmpty(requiresArguments["GeneratedResourceFile"]))
                {
                    if (!System.String.IsNullOrEmpty(s))
                    {
                        s += ".";
                    }
                    s += requiresArguments["GeneratedResourceFile"];
                }
                codeMemberField.InitExpression = new System.CodeDom.CodePrimitiveExpression(s);

                System.CodeDom.Compiler.CodeGeneratorOptions codeGeneratorOptions = new System.CodeDom.Compiler.CodeGeneratorOptions();
                codeGeneratorOptions.BlankLinesBetweenMembers = true;
                codeGeneratorOptions.IndentString             = "    ";
                codeGeneratorOptions.VerbatimOrder            = true;
                codeGeneratorOptions.BracingStyle             = "C";
                using (System.IO.StringWriter stringWriter = new System.IO.StringWriter(codeBuffer, System.Globalization.CultureInfo.InvariantCulture))
                {
                    if (codeMemberField != null)
                    {
                        languageProvider.GenerateCodeFromMember(codeMemberField, stringWriter, codeGeneratorOptions);
                    }
                }
            }
            if (!System.String.IsNullOrEmpty(providesArguments["GeneratedNamespace"]))
            {
                codeMemberField            = new System.CodeDom.CodeMemberField(new System.CodeDom.CodeTypeReference(typeof(string)), providesArguments["GeneratedNamespace"]);
                codeMemberField.Attributes = System.CodeDom.MemberAttributes.Abstract | System.CodeDom.MemberAttributes.Override | System.CodeDom.MemberAttributes.FamilyAndAssembly | System.CodeDom.MemberAttributes.FamilyOrAssembly;
                string s = requiresArguments["ProjectDefaultNamespace"];
                codeMemberField.InitExpression = new System.CodeDom.CodePrimitiveExpression(s);

                System.CodeDom.Compiler.CodeGeneratorOptions codeGeneratorOptions = new System.CodeDom.Compiler.CodeGeneratorOptions();
                codeGeneratorOptions.BlankLinesBetweenMembers = true;
                codeGeneratorOptions.IndentString             = "    ";
                codeGeneratorOptions.VerbatimOrder            = true;
                codeGeneratorOptions.BracingStyle             = "C";
                using (System.IO.StringWriter stringWriter = new System.IO.StringWriter(codeBuffer, System.Globalization.CultureInfo.InvariantCulture))
                {
                    if (codeMemberField != null)
                    {
                        languageProvider.GenerateCodeFromMember(codeMemberField, stringWriter, codeGeneratorOptions);
                    }
                }
            }
        }
Esempio n. 5
0
 protected abstract void GenerateField(System.CodeDom.CodeMemberField e);
Esempio n. 6
0
        public static System.CodeDom.CodeConditionStatement BreakCodeStatement(System.CodeDom.CodeTypeDeclaration codeClass, System.CodeDom.CodeStatementCollection codeStatementCollection, Guid debuggerId, Guid breakId)
        {
            if (debuggerId == Guid.Empty || breakId == Guid.Empty)
            {
                throw new InvalidOperationException();
            }
            //var ret = new System.CodeDom.CodeConditionStatement();
            //ret.Condition = new System.CodeDom.CodePrimitiveExpression(false);
            //return ret;

            var breakEnalbeVariableName = "BreakEnable_" + EngineNS.Editor.Assist.GetValuedGUIDString(breakId);

            System.CodeDom.CodeMemberField member;
            if (!CodeMemberFieldDic.TryGetValue(breakId, out member))
            {
                // 代码:public static bool BreakEnable_XXXXX = false;
                member                = new System.CodeDom.CodeMemberField(typeof(bool), breakEnalbeVariableName);
                member.Attributes     = System.CodeDom.MemberAttributes.Public | System.CodeDom.MemberAttributes.Static;
                member.InitExpression = new System.CodeDom.CodePrimitiveExpression(false);
                codeClass.Members.Add(member);
                CodeMemberFieldDic.Add(breakId, member);
            }
            else
            {
                if (!codeClass.Members.Contains(member))
                {
                    codeClass.Members.Add(member);
                }
            }

            // 代码: if(BreakEnable_XXXXX)
            //       {
            //          var breakContext = new EngineNS.Editor.Runner.RunnerManager.BreakContext();
            //
            //          EngineNS.Editor.Runner.RunnerManager.Instance.Break(breakContext);
            //       }
            var conditionSt = new System.CodeDom.CodeConditionStatement();

            conditionSt.Condition = new System.CodeDom.CodeVariableReferenceExpression(breakEnalbeVariableName);

            var breakContextVarName = "breakContext";
            var breakContextType    = typeof(EngineNS.Editor.Runner.RunnerManager.BreakContext);

            conditionSt.TrueStatements.Add(new System.CodeDom.CodeVariableDeclarationStatement(breakContextType, breakContextVarName, new System.CodeDom.CodeObjectCreateExpression(breakContextType, new System.CodeDom.CodeExpression[] { })));
            conditionSt.TrueStatements.Add(new System.CodeDom.CodeAssignStatement(
                                               new System.CodeDom.CodeFieldReferenceExpression(
                                                   new System.CodeDom.CodeVariableReferenceExpression(breakContextVarName), "ThisObject"),
                                               new System.CodeDom.CodeThisReferenceExpression()));

            conditionSt.TrueStatements.Add(new System.CodeDom.CodeAssignStatement(
                                               new System.CodeDom.CodeFieldReferenceExpression(
                                                   new System.CodeDom.CodeVariableReferenceExpression(breakContextVarName), "DebuggerId"),
                                               new System.CodeDom.CodeSnippetExpression("EngineNS.Rtti.RttiHelper.GuidTryParse(\"" + debuggerId.ToString() + "\")")));
            conditionSt.TrueStatements.Add(new System.CodeDom.CodeAssignStatement(
                                               new System.CodeDom.CodeFieldReferenceExpression(
                                                   new System.CodeDom.CodeVariableReferenceExpression(breakContextVarName), "BreakId"),
                                               new System.CodeDom.CodeSnippetExpression("EngineNS.Rtti.RttiHelper.GuidTryParse(\"" + breakId.ToString() + "\")")));
            conditionSt.TrueStatements.Add(new System.CodeDom.CodeAssignStatement(
                                               new System.CodeDom.CodeFieldReferenceExpression(
                                                   new System.CodeDom.CodeVariableReferenceExpression(breakContextVarName), "ClassName"),
                                               new System.CodeDom.CodePrimitiveExpression(codeClass.Name)));
            conditionSt.TrueStatements.Add(new System.CodeDom.CodeAssignStatement(
                                               new System.CodeDom.CodeFieldReferenceExpression(
                                                   new System.CodeDom.CodeVariableReferenceExpression(breakContextVarName), "ValueContext"),
                                               new System.CodeDom.CodeVariableReferenceExpression("mDebuggerContext")));


            var methodExpState = new System.CodeDom.CodeExpressionStatement(
                new CodeGenerateSystem.CodeDom.CodeMethodInvokeExpression(
                    new System.CodeDom.CodeVariableReferenceExpression("EngineNS.Editor.Runner.RunnerManager.Instance"),
                    "Break",
                    new System.CodeDom.CodeExpression[] { new System.CodeDom.CodeVariableReferenceExpression(breakContextVarName) }));

            conditionSt.TrueStatements.Add(methodExpState);
            codeStatementCollection.Add(conditionSt);

            return(conditionSt);
        }
Esempio n. 7
0
        public static object GetDbInfo(System.Data.DataSet ds)
        {
            // Get a code provider object.
            System.CodeDom.Compiler.CodeDomProvider cdp = new Microsoft.CSharp.CSharpCodeProvider();

            // Create the namespace and import the default "System" namespace.
            System.CodeDom.CodeNamespace nmspc = new System.CodeDom.CodeNamespace("DataExplorer");
            nmspc.Imports.Add(new System.CodeDom.CodeNamespaceImport("System"));
            nmspc.Imports.Add(new System.CodeDom.CodeNamespaceImport("System.ComponentModel"));

            // Create a class object.
            System.CodeDom.CodeTypeDeclaration clsDbInfo = new System.CodeDom.CodeTypeDeclaration("DbInfo");
            clsDbInfo.IsClass = true;
            nmspc.Types.Add(clsDbInfo);

            // Add fields to the class for each value returned.
            List <string> fldNms = new List <string>();

            for (int i = 0; i < ds.Tables.Count; i++)
            {
                for (int j = 0; j < ds.Tables[i].Columns.Count; j++)
                {
                    string fldNm = "_" + ds.Tables[i].Columns[j].ColumnName.ToLower();
                    if (!fldNms.Contains(fldNm))
                    {
                        System.CodeDom.CodeMemberField fld = new System.CodeDom.CodeMemberField(typeof(System.String), fldNm);
                        fld.Attributes = System.CodeDom.MemberAttributes.Public;
                        clsDbInfo.Members.Add(fld);
                        fldNms.Add(fldNm);
                    }
                }
            }

            // Add properties for the class to access each field.
            List <string> propNms = new List <string>();

            for (int i = 0; i < ds.Tables.Count; i++)
            {
                for (int j = 0; j < ds.Tables[i].Columns.Count; j++)
                {
                    string
                        fldNm  = "_" + ds.Tables[i].Columns[j].ColumnName.ToLower(),
                        propNm = ds.Tables[i].Columns[j].ColumnName;

                    if (!propNms.Contains(propNm))
                    {
                        System.CodeDom.CodeMemberProperty prop = new System.CodeDom.CodeMemberProperty();
                        prop.Attributes = System.CodeDom.MemberAttributes.Public;
                        prop.Name       = propNm;
                        prop.Type       = new System.CodeDom.CodeTypeReference(typeof(System.String));
                        System.CodeDom.CodeVariableReferenceExpression retExp    = new System.CodeDom.CodeVariableReferenceExpression(fldNm);
                        System.CodeDom.CodeMethodReturnStatement       getReturn = new System.CodeDom.CodeMethodReturnStatement(retExp);
                        prop.GetStatements.Add(getReturn);
                        prop.HasGet = true;
                        prop.HasSet = false;
                        string catName = (ds.Tables[i].TableName.EndsWith("1")) ? "File Group" : "Database";
                        System.CodeDom.CodeAttributeDeclaration attrCat = new System.CodeDom.CodeAttributeDeclaration("Category", new System.CodeDom.CodeAttributeArgument(new System.CodeDom.CodePrimitiveExpression(catName)));
                        prop.CustomAttributes.Add(attrCat);
                        // Add the property to our class.
                        clsDbInfo.Members.Add(prop);
                        propNms.Add(propNm);
                    }
                }
            }

            // Add a constructor to the class
            System.CodeDom.CodeConstructor clsDbInfoConstr = new System.CodeDom.CodeConstructor();
            clsDbInfoConstr.Attributes = System.CodeDom.MemberAttributes.Public;
            clsDbInfo.Members.Add(clsDbInfoConstr);

            // Create a CompileUnit for this new type.
            System.CodeDom.CodeCompileUnit cu = new System.CodeDom.CodeCompileUnit();
            cu.ReferencedAssemblies.Add("system.dll");
            cu.Namespaces.Add(nmspc);

            // Now, we're ready to generate some code!
#if DEBUG
            // If we're running in DEBUG mode, I want to see the generated code.
            using (System.IO.FileStream fs = new System.IO.FileStream("dbinfo.cs", System.IO.FileMode.Create, System.IO.FileAccess.Write))
                using (System.IO.StreamWriter sr = new System.IO.StreamWriter(fs))
                    cdp.GenerateCodeFromCompileUnit(cu, sr, null);
#endif
            System.CodeDom.Compiler.CompilerParameters cp = new System.CodeDom.Compiler.CompilerParameters();
            cp.ReferencedAssemblies.Add("system.dll");
            cp.GenerateExecutable      = false;
            cp.IncludeDebugInformation = false;
            cp.GenerateInMemory        = false;
            //cp.OutputAssembly = _outputName;
            System.CodeDom.Compiler.CompilerResults cr = cdp.CompileAssemblyFromDom(cp, cu);

            if (!cr.Errors.HasErrors)
            {
                System.Reflection.Assembly asm = cr.CompiledAssembly;
                object dbInfo = asm.CreateInstance("DataExplorer.DbInfo");
                return(dbInfo);
            }
            else
            {
                return(null);
            }
        }