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"); } } }