MethodParameterPropertyImpl OneMethod_AddPropertyOfParameter(Metadata.Parameter parameter) { ////!!!!имя еще как-то фиксить? string name = null; if (parameter.ReturnValue) { name = "ReturnValue"; } else { name = parameter.Name.Substring(0, 1).ToUpper() + parameter.Name.Substring(1); } //!!!!поддержать ByReference. еще какие? bool readOnly = parameter.Output || parameter.ReturnValue || parameter.ByReference; //bool readOnly = parameter.Output || parameter.ReturnValue; //!!!! //var parameterType = GetOverrideParameterType( parameter, out bool error ); //if( error ) //{ // unableToInit = true; // goto unableToInitLabel; //} //var parameterType = parameter.Type; Metadata.TypeInfo type; bool referenceSupport = !readOnly; if (referenceSupport) { Type unrefNetType = parameter.Type.GetNetType(); var refNetType = typeof(Reference <>).MakeGenericType(unrefNetType); type = MetadataManager.GetTypeOfNetType(refNetType); } else { type = parameter.Type; } bool invoke = parameter.ReturnValue || parameter.ByReference || parameter.Output; string namePrefix = "__parameter_"; string displayName = TypeUtility.DisplayNameAddSpaces(name); var prop = new MethodParameterPropertyImpl(this, namePrefix + name, false, type, parameter.Type, new Metadata.Parameter[0], readOnly, "Method's Parameters", displayName, referenceSupport, parameter, invoke); prop.Description = ""; if (!readOnly) { prop.Serializable = SerializeType.Enable; } return(prop); }
void Clear() { compiledCode = ""; compiledScript = null; compiledMembers.Clear(); compiledMemberBySignature.Clear(); //One method mode compiledOneMethod = null; properties.Clear(); propertyBySignature.Clear(); propertyMethodParameters = null; propertyMethodReturnParameter = null; // clear cached texture for flow graph cachedFlowGraphNodeImage?.Dispose(); cachedFlowGraphNodeImage = null; }
void OneMethod_AddProperties(MethodImpl method) { //parameters propertyMethodParameters = new List <MethodParameterPropertyImpl>(); foreach (var parameter in method.Parameters) { var prop = OneMethod_AddPropertyOfParameter(parameter); properties.Add(prop); propertyBySignature[prop.Signature] = prop; //!!!!так? если несколько? if (parameter.ReturnValue) { propertyMethodReturnParameter = prop; } else { propertyMethodParameters.Add(prop); } } }