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)); } }
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()); }