示例#1
0
        public override System.CodeDom.CodeExpression GCode_CodeDom_GetValue(CodeGenerateSystem.Base.LinkControl element, CodeGenerateSystem.Base.GenerateCodeContext_Method context)
        {
            var linkOI = GetLinkObjInfo(mResultMethod);

            if (linkOI.HasLink)
            {
                int i = 0;
                for (; i < linkOI.LinkInfos.Count; i++)
                {
                    var linkInfo = linkOI.LinkInfos[i];
                    if (mbFromObject)
                    {
                        if (linkInfo.m_linkToObjectInfo == linkOI)
                        {
                            break;
                        }
                    }
                    else
                    {
                        if (linkInfo.m_linkFromObjectInfo == linkOI)
                        {
                            break;
                        }
                    }
                }
                return(linkOI.GetLinkObject(i, mbFromObject).GCode_CodeDom_GetValue(linkOI.GetLinkElement(i, mbFromObject), context));
            }
            return(null);
        }
示例#2
0
        public override Type GCode_GetType(CodeGenerateSystem.Base.LinkControl element)
        {
            var linkOI = GetLinkObjInfo(mResultMethod);

            if (linkOI.HasLink)
            {
                int i = 0;
                for (; i < linkOI.LinkInfos.Count; i++)
                {
                    var linkInfo = linkOI.LinkInfos[i];
                    if (mbFromObject)
                    {
                        if (linkInfo.m_linkToObjectInfo == linkOI)
                        {
                            break;
                        }
                    }
                    else
                    {
                        if (linkInfo.m_linkFromObjectInfo == linkOI)
                        {
                            break;
                        }
                    }
                }
                return(linkOI.GetLinkObject(i, mbFromObject).GCode_GetType(linkOI.GetLinkElement(i, mbFromObject)));
            }
            else if (!mIsGenericType)
            {
                return(ParamType);
            }

            return(base.GCode_GetType(element));
        }
示例#3
0
        public override CodeExpression GCode_CodeDom_GetValue(CodeGenerateSystem.Base.LinkControl element, CodeGenerateSystem.Base.GenerateCodeContext_Method context)
        {
            RefreshValueFromTemplateClass2PropertyInfoList();
            if (element == mCtrlreturnLink)
            {
                var info = GetLinkObjInfo(mCtrlparamLink);

                string value = "CSUtility.Data.DataTemplateManager<";
                value += mParamType.FullName + ", " + mReturnType.FullName + ">.Instance";

                System.CodeDom.CodeMethodReferenceExpression methodRef = new System.CodeDom.CodeMethodReferenceExpression();
                methodRef.TargetObject = new System.CodeDom.CodeSnippetExpression(value);
                methodRef.MethodName   = "GetDataTemplate";

                CodeExpression[] exps = new CodeExpression[1];
                if (info.HasLink)
                {
                    var ep = info.GetLinkObject(0, true).GCode_CodeDom_GetValue(info.GetLinkElement(0, true), context);
                    exps[0] = ep;
                }
                else
                {
                    foreach (var proInfo in mCustomPropertyInfos)
                    {
                        if (proInfo.PropertyName == "Id")
                        {
                            exps[0] = new CodePrimitiveExpression(proInfo.CurrentValue);
                            break;
                        }
                    }
                }
                return(new System.CodeDom.CodeMethodInvokeExpression(methodRef, exps));
            }
            return(base.GCode_CodeDom_GetValue(element, context));
        }
示例#4
0
        public override CodeExpression GCode_CodeDom_GetValue(CodeGenerateSystem.Base.LinkControl element, CodeGenerateSystem.Base.GenerateCodeContext_Method context)
        {
            if (mMethodInfo == null)
            {
                return(base.GCode_CodeDom_GetValue(element, context));
            }

            return(base.GCode_CodeDom_GetValue(element, context));
        }
示例#5
0
        public override string GCode_GetValueType(CodeGenerateSystem.Base.LinkControl element)
        {
            var linkOI = GetLinkObjInfo(mResultMethod);

            if (linkOI.HasLink)
            {
                int i = 0;
                for (; i < linkOI.LinkInfos.Count; i++)
                {
                    var linkInfo = linkOI.LinkInfos[i];
                    if (linkInfo.m_linkFromObjectInfo == linkOI)
                    {
                        break;
                    }
                }
                return(linkOI.GetLinkObject(i, false).GCode_GetValueType(linkOI.GetLinkElement(i, false)));
            }
            //////else if (!mIsGenericType)
            //////{
            //////    return ParamType?.FullName;
            //////}

            return(base.GCode_GetValueType(element));
        }
示例#6
0
        public override void GCode_CodeDom_GenerateCode(System.CodeDom.CodeTypeDeclaration codeClass, System.CodeDom.CodeStatementCollection codeStatementCollection, CodeGenerateSystem.Base.LinkControl element, CodeGenerateSystem.Base.GenerateCodeContext_Method context)
        {
            var linkOI = GetLinkObjInfo(mParamsMethod);

            if (linkOI.HasLink)
            {
                int i = 0;
                for (; i < linkOI.LinkInfos.Count; i++)
                {
                    var linkInfo = linkOI.LinkInfos[i];
                    if (linkInfo.m_linkFromObjectInfo == linkOI)
                    {
                        break;
                    }
                }
                if (!linkOI.GetLinkObject(i, false).IsOnlyReturnValue)
                {
                    linkOI.GetLinkObject(i, false).GCode_CodeDom_GenerateCode(codeClass, codeStatementCollection, linkOI.GetLinkElement(i, false), context);
                }
            }
        }
示例#7
0
        public override void GCode_CodeDom_GenerateCode(CodeTypeDeclaration codeClass, CodeStatementCollection codeStatementCollection, CodeGenerateSystem.Base.LinkControl element, CodeGenerateSystem.Base.GenerateCodeContext_Method context)
        {
            if (mMethodInfo == null)
            {
                base.GCode_CodeDom_GenerateCode(codeClass, codeStatementCollection, element, context);
                return;
            }

            // 保存节点Id和节点名字
            Editor.Runner.RunnerManager.Instance.LastRunnedNodeInfo = EngineNS.Editor.Assist.GetValuedGUIDString(this.Id) + this.NodeName;
            Editor.Runner.RunnerManager.Instance.CurrentId          = this.Id;

            if (MemberParentNode != null && !MemberParentNode.IsOnlyReturnValue)
            {
                var tempContext = context.Copy();
                tempContext.GenerateNext = false;
                MemberParentNode?.GCode_CodeDom_GenerateCode(codeClass, codeStatementCollection, mHostUsefulMemberData.LinkObject?.LinkElement, tempContext);
            }


            //if (element == MethodLink_Pre)
            //{
            //    if (codeStatementCollection.Contains(mMethodInvokeStatment))
            //        return;

            //    // 参数
            //    foreach (var paramNode in mChildNodes)
            //    {
            //        if (paramNode is MethodInvokeParameterControl)
            //        {
            //            var paramCtrl = paramNode as MethodInvokeParameterUnionControl;
            //            paramCtrl.GCode_CodeDom_GenerateCode(codeClass, codeStatementCollection, null, context);
            //        }
            //    }
            //}
        }
示例#8
0
 public override Type GCode_GetType(CodeGenerateSystem.Base.LinkControl element)
 {
     return(null);
 }
示例#9
0
 public override string GCode_GetValueType(CodeGenerateSystem.Base.LinkControl element)
 {
     return(string.Empty);
 }
示例#10
0
 public override string GCode_GetValueName(CodeGenerateSystem.Base.LinkControl element)
 {
     return("MethodReturnValue_" + EngineNS.Editor.Assist.GetValuedGUIDString(Id));
 }
示例#11
0
 public override void GCode_CodeDom_GenerateCode(CodeTypeDeclaration codeClass, CodeStatementCollection codeStatementCollection, CodeGenerateSystem.Base.LinkControl element, CodeGenerateSystem.Base.GenerateCodeContext_Method context)
 {
     if (element == null || element == mCtrlreturnLink)
     {
         var linkOI = GetLinkObjInfo(mCtrlparamLink);
         if (linkOI.HasLink)
         {
             if (!linkOI.GetLinkObject(0, true).IsOnlyReturnValue)
             {
                 linkOI.GetLinkObject(0, true).GCode_CodeDom_GenerateCode(codeClass, codeStatementCollection, linkOI.GetLinkElement(0, true), context);
             }
         }
     }
     //             if(element == Method_Pre)
     //             {
     //                 string value = "CSUtility.Data.DataTemplateManager<";
     //                 value += mParamType.FullName + ", " + mReturnType.FullName + ">.Instance";
     //
     //                 System.CodeDom.CodeMethodReferenceExpression methodRef = new System.CodeDom.CodeMethodReferenceExpression();
     //                 methodRef.TargetObject = new System.CodeDom.CodeSnippetExpression(value);
     //                 methodRef.MethodName = "GetDataTemplate";
     //
     //                 CodeExpression[] exps = new CodeExpression[1];
     //                 var info = GetLinkObjInfo(paramLink);
     //                 if (info.HasLink)
     //                 {
     //                     var ep = info.GetLinkObject(0, true).GCode_CodeDom_GetValue(info.GetLinkElement(0, true));
     //                     exps[0] = ep;
     //                 }
     //                 else
     //                 {
     //                     var proInfo = mTemplateClassInstance.GetType().GetProperty("Id");
     //                     var classValue = proInfo.GetValue(mTemplateClassInstance);
     //                     exps[0] = new CodePrimitiveExpression(classValue);
     //                 }
     //                 var exp = new System.CodeDom.CodeMethodInvokeExpression(methodRef, exps);
     //                 codeStatementCollection.Add(exp);
     //             }
 }
示例#12
0
 public override string GCode_GetValueType(CodeGenerateSystem.Base.LinkControl element)
 {
     return(mReturnType.FullName);
 }