Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }