コード例 #1
0
    static void WriteMethods(StreamWriter writer, IEnumerable <MethodInfo> methods, GenMethodType methodType)
    {
        bool wroteHead = false;

        foreach (var item in methods)
        {
            var methodName = item.Name;
            if (methodName.StartsWith("get_") || methodName.StartsWith("set_"))
            {
                continue;
            }
            if (item.IsGenericMethod && !isSupportedGenericMethod(item))
            {
                continue;
            }
            if (methodType == GenMethodType.Extension)
            {
                if (!wroteHead)
                {
                    writer.WriteLine();
                    writer.WriteLine("---extension methods");
                    wroteHead = true;
                }
            }
            var paramArray = item.GetParameters();
            for (int i = 0, iMax = paramArray.Length; i < iMax; i++)
            {
                if (i == 0 && methodType == GenMethodType.Extension)
                {
                    continue;
                }
                var param = paramArray[i];
                writer.Write("---@param ");
                writer.Write(param.Name);
                writer.Write(' ');
                writer.Write(GetTypeTagName(param.ParameterType));
                if ((param.Attributes & ParameterAttributes.HasDefault) == ParameterAttributes.HasDefault)
                {
                    writer.Write(" @default_value:");
                    writer.WriteLine(param.DefaultValue);
                }
                else if (param.IsOut)
                {
                    writer.WriteLine(" @out");
                }
                else if (param.IsIn)
                {
                    writer.WriteLine(" @in");
                }
                else
                {
                    writer.WriteLine();
                }
            }
            if (item.ReturnType != typeof(void))
            {
                writer.Write("---@return ");
                writer.WriteLine(GetTypeTagName(item.ReturnType));
            }
            writer.Write("function m");
            writer.Write(methodType == GenMethodType.Static ? "." : ":");
            writer.Write(item.Name);
            writer.Write("(");
            for (int i = 0, iMax = paramArray.Length; i < iMax; i++)
            {
                if (i == 0 && methodType == GenMethodType.Extension)
                {
                    continue;
                }
                writer.Write(paramArray[i].Name);
                if (i < iMax - 1)
                {
                    writer.Write(", ");
                }
            }
            writer.WriteLine(") end");
        }
    }
コード例 #2
0
    //单写一个函数,可以用其他类中的函数写到当前类中
    private static void WriteMethods(StreamWriter writer, MethodInfo item, GenMethodType methodType = GenMethodType.Instance)
    {
        var methodName = item.Name;

        if (methodName.StartsWith("get_") || methodName.StartsWith("set_"))
        {
            return;
        }
        if (item.IsGenericMethod && !isSupportedGenericMethod(item))
        {
            return;
        }
        var paramArray = item.GetParameters();

        for (int i = 0, iMax = paramArray.Length; i < iMax; i++)
        {
            var param     = paramArray[i];
            var paramName = param.Name;
            paramName = GetNewParamName(paramName);
            writer.Write("---@param ");
            writer.Write(paramName);
            writer.Write(' ');
            writer.Write(param.ParameterType.GetTypeTagName());
            if ((param.Attributes & ParameterAttributes.HasDefault) == ParameterAttributes.HasDefault)
            {
                writer.Write(" @default_value:");
                writer.WriteLine(param.DefaultValue);
            }
            else if (param.IsOut)
            {
                writer.WriteLine(" @out");
            }
            else if (param.IsIn)
            {
                writer.WriteLine(" @in");
            }
            else
            {
                writer.WriteLine();
            }
        }
        if (item.ReturnType != typeof(void))
        {
            writer.Write("---@return ");
            writer.WriteLine(item.ReturnType.GetTypeTagName());
        }
        writer.Write("function m");
        writer.Write(methodType == GenMethodType.Static ? "." : ":");
        writer.Write(item.Name);
        writer.Write("(");
        for (int i = 0, iMax = paramArray.Length; i < iMax; i++)
        {
            string paramName = paramArray[i].Name;
            paramName = GetNewParamName(paramName);
            writer.Write(paramName);
            if (i < iMax - 1)
            {
                writer.Write(", ");
            }
        }
        writer.WriteLine(") end");
    }