private ZCallDesc ToZCallDesc(ZMethodDesc methodDesc) { ZCallDesc callDesc = new ZCallDesc(); foreach (var part in methodDesc.Parts) { if (part is string) { callDesc.Add(part); } else if (part is ZMethodNormalArg) { ZMethodNormalArg mna = part as ZMethodNormalArg; ZCallValueArg callArg = new ZCallValueArg(mna.ArgZType); callDesc.Add(callArg); } else if (part is ZMethodGenericArg) { ZMethodGenericArg mna = part as ZMethodGenericArg; ZCallValueArg callArg = new ZCallValueArg(mna.ArgBaseZType); callDesc.Add(callArg); } else { throw new CompileException(); } } return(callDesc); }
private ZMethodArg parseArg() { string argTypeName = parseIdent(); movenext(); string argname = parseIdent(); //string realArgName = argname; if (string.IsNullOrEmpty(argname)) { return(null); } //ZMethodArg arg = null; if (argTypeDict.ContainsKey(argTypeName)) { ZMethodGenericArg genericArg = new ZMethodGenericArg(argTypeName, ZTypeManager.ZOBJECT); return(genericArg); } else { var ztype = GetZTypeByTypeName(argTypeName); if (ztype != null) { ZMethodNormalArg zarg = new ZMethodNormalArg(argname, ztype); return(zarg); } } throw new ZyyRTException("没有导入'" + argTypeName + "'类型"); //return arg; }