Exemplo n.º 1
0
        protected override StringBuilder AppendMethodName(StringBuilder buf, MethodDefinition method)
        {
            if (DocUtils.IsExplicitlyImplemented(method))
            {
                return(buf.Append(method.Name.Split('.').Last()));
            }

            if (DocUtils.IsOperator(method))
            {
                // this is an operator
                switch (method.Name)
                {
                case "op_Implicit":
                case "op_Explicit":
                    buf.Length--;     // remove the last space, which assumes a member name is coming
                    return(buf);

                case "op_Addition":
                case "op_UnaryPlus":
                    return(buf.Append("Operator +"));

                case "op_Subtraction":
                case "op_UnaryNegation":
                    return(buf.Append("Operator -"));

                case "op_IntegerDivision":
                    return(buf.Append("Operator \\"));

                case "op_Division":
                    return(buf.Append("Operator /"));

                case "op_Multiply":
                    return(buf.Append("Operator *"));

                case "op_Modulus":
                    return(buf.Append("Operator Mod"));

                case "op_BitwiseAnd":
                    return(buf.Append("Operator And"));

                case "op_BitwiseOr":
                    return(buf.Append("Operator Or"));

                case "op_ExclusiveOr":
                    return(buf.Append("Operator Xor"));

                case "op_LeftShift":
                    return(buf.Append("Operator <<"));

                case "op_RightShift":
                    return(buf.Append("Operator >>"));

                case "op_LogicalNot":
                    return(buf.Append("Operator Not"));

                case "op_OnesComplement":
                    return(buf.Append("Operator Not"));

                case "op_True":
                    return(buf.Append("Operator IsTrue"));

                case "op_False":
                    return(buf.Append("Operator IsFalse"));

                case "op_Equality":
                    return(buf.Append("Operator =="));

                case "op_Inequality":
                    return(buf.Append("Operator !="));

                case "op_LessThan":
                    return(buf.Append("Operator <"));

                case "op_LessThanOrEqual":
                    return(buf.Append("Operator <="));

                case "op_GreaterThan":
                    return(buf.Append("Operator >"));

                case "op_GreaterThanOrEqual":
                    return(buf.Append("Operator >="));

                case "op_Like":
                    return(buf.Append("Operator Like"));

                default:
                    return(base.AppendMethodName(buf, method));
                }
            }
            else
            {
                return(base.AppendMethodName(buf, method));
            }
        }
Exemplo n.º 2
0
        protected override string GetMethodDeclaration(MethodDefinition method)
        {
            if (method.HasCustomAttributes && method.CustomAttributes.Cast <CustomAttribute>().Any(
                    ca => ca.GetDeclaringType() == "System.Diagnostics.Contracts.ContractInvariantMethodAttribute"))
            {
                return(null);
            }


            // Special signature for destructors.
            if (method.Name == "Finalize" && method.Parameters.Count == 0)
            {
                return(GetFinalizerName(method));
            }

            StringBuilder buf = new StringBuilder();

            if (DocUtils.IsExtensionMethod(method))
            {
                buf.Append("<Extension()>" + GetLineEnding());
            }

            AppendVisibility(buf, method);
            if (buf.Length == 0 &&
                !(DocUtils.IsExplicitlyImplemented(method) && !method.IsSpecialName))
            {
                return(null);
            }

            AppendModifiers(buf, method);
            if (buf.Length != 0)
            {
                buf.Append(" ");
            }
            bool isFunction = method.MethodReturnType.ReturnType.FullName != "System.Void";

            if (!DocUtils.IsOperator(method))
            {
                if (isFunction)
                {
                    buf.Append("Function ");
                }
                else
                {
                    buf.Append("Sub ");
                }
            }
            AppendMethodName(buf, method);

            AppendGenericMethod(buf, method).Append(" ");
            AppendParameters(buf, method, method.Parameters);
            AppendGenericMethodConstraints(buf, method);
            if (isFunction)
            {
                buf.Append(" As ").Append(GetTypeName(method.ReturnType, new DynamicParserContext(method.MethodReturnType)));
            }

            if (DocUtils.IsExplicitlyImplemented(method))
            {
                TypeReference   iface;
                MethodReference ifaceMethod;
                DocUtils.GetInfoForExplicitlyImplementedMethod(method, out iface, out ifaceMethod);
                buf.Append(" Implements ")
                .Append(new VBMemberFormatter(this.TypeMap).GetName(iface))
                .Append('.')
                .Append(ifaceMethod.Name);
            }

            return(buf.ToString());
        }