コード例 #1
0
        private void BuildModuleCode(IApiModule module, StringBuilder sb)
        {
            string modName = module.ModuleName;
            sb.AppendFormat("function {0}() ", modName);
            sb.Append(" {  };\n");
            Type typ = module.GetType();
            MethodInfo[] mis = typ.GetMethods();
            foreach (MethodInfo mi in mis)
            {
                ApiCallAttribute attr = null;
                try
                {
                    object[] attrs = mi.GetCustomAttributes(typeof(ApiCallAttribute), true);
                    if (attrs.Length > 0)
                    {
                        attr = attrs[0] as ApiCallAttribute;
                    }
                }
                catch (Exception ex)
                {
                }

                string methodName = mi.Name;
                if (attr != null)
                {
                    sb.AppendFormat("{0}.prototype.{1} = function (", modName, methodName);
                    ParameterInfo[] pis = mi.GetParameters();
                    string parmString = "";
                    StringBuilder sbParm = new StringBuilder();
                    foreach (ParameterInfo pi in pis)
                    {
                        parmString = parmString + string.Format("{0},", pi.Name);
                        sbParm.AppendFormat("\tparms.push({0});\n",pi.Name);
                    }
                    if (parmString.Length>0)
                    {
                        parmString = parmString.Substring(0, parmString.Length - 1);
                    }
                    sb.AppendFormat("{0},retFunc)", parmString);
                    sb.Append("{\n");
                    sb.Append("\tparms=[];\n");
                    sb.Append(sbParm.ToString());

                    sb.Append("\tparmJson = JSON.stringify(parms);\n");
                    if (attr.IsSynchronous)
                    {
                        sb.AppendFormat("\n\treturn window.polaris.dispatchSync(\"{0}\",\"{1}\",parmJson);\n", modName, methodName);
                    }
                    else
                    {
                        sb.AppendFormat("\n\twindow.polaris.dispatch(\"{0}\",\"{1}\",parmJson,retFunc);\n", modName, methodName);
                    }
                    sb.Append("}\n");
                }
            }
        }