示例#1
0
        void WriteToolTipWithClassInfo(ITextOutput output, ITypeDefOrRef type)
        {
            var td = type.ResolveTypeDef();

            MethodDef invoke;
            if (IsDelegate(td) && (invoke = td.FindMethod("Invoke")) != null && invoke.MethodSig != null) {
                output.Write("delegate", TextTokenType.Keyword);
                output.WriteSpace();

                var writer = new MethodWriter(this, output, invoke);
                writer.WriteReturnType();

                // Always print the namespace here because that's what VS does. I.e., ignore
                // TOOLTIP_USE_NAMESPACES.
                WriteToolTipType(output, td, true);

                writer.WriteGenericArguments();
                writer.WriteMethodParameterList('(', ')');
                return;
            }

            if (td == null) {
                base.WriteToolTip(output, type, null);
                return;
            }

            string keyword;
            if (td.IsEnum)
                keyword = "enum";
            else if (td.IsValueType)
                keyword = "struct";
            else if (td.IsInterface)
                keyword = "interface";
            else
                keyword = "class";
            output.Write(keyword, TextTokenType.Keyword);
            output.WriteSpace();

            // Always print the namespace here because that's what VS does. I.e., ignore
            // TOOLTIP_USE_NAMESPACES.
            WriteToolTipType(output, type, true, false);
        }
示例#2
0
        void WriteToolTip(ITextOutput output, PropertyDef prop)
        {
            var sig = prop.PropertySig;
            var md = prop.GetMethods.FirstOrDefault() ??
                    prop.SetMethods.FirstOrDefault() ??
                    prop.OtherMethods.FirstOrDefault();

            var writer = new MethodWriter(this, output, md);
            writer.WriteReturnType();
            WriteToolTip(output, prop.DeclaringType);
            output.Write('.', TextTokenType.Operator);
            var ovrMeth = md == null || md.Overrides.Count == 0 ? null : md.Overrides[0].MethodDeclaration;
            if (prop.IsIndexer()) {
                if (ovrMeth != null) {
                    WriteToolTipType(output, ovrMeth.DeclaringType, false);
                    output.Write('.', TextTokenType.Operator);
                }
                output.Write("this", TextTokenType.Keyword);
                writer.WriteGenericArguments();
                writer.WriteMethodParameterList('[', ']');
            }
            else if (ovrMeth != null && GetPropName(ovrMeth) != null) {
                WriteToolTipType(output, ovrMeth.DeclaringType, false);
                output.Write('.', TextTokenType.Operator);
                output.Write(IdentifierEscaper.Escape(GetPropName(ovrMeth)), TextTokenHelper.GetTextTokenType(prop));
            }
            else
                output.Write(IdentifierEscaper.Escape(prop.Name), TextTokenHelper.GetTextTokenType(prop));

            output.WriteSpace();
            output.WriteLeftBrace();
            if (prop.GetMethods.Count > 0) {
                output.WriteSpace();
                output.Write("get", TextTokenType.Keyword);
                output.Write(';', TextTokenType.Operator);
            }
            if (prop.SetMethods.Count > 0) {
                output.WriteSpace();
                output.Write("set", TextTokenType.Keyword);
                output.Write(';', TextTokenType.Operator);
            }
            output.WriteSpace();
            output.WriteRightBrace();
        }
示例#3
0
        void WriteToolTipMethod(ITextOutput output, IMethod method)
        {
            var writer = new MethodWriter(this, output, method);
            writer.WriteReturnType();

            WriteToolTip(output, method.DeclaringType);
            output.Write('.', TextTokenType.Operator);
            if (writer.md != null && writer.md.IsConstructor && method.DeclaringType != null)
                output.Write(IdentifierEscaper.Escape(RemoveGenericTick(method.DeclaringType.Name)), TextTokenHelper.GetTextTokenType(method));
            else if (writer.md != null && writer.md.Overrides.Count > 0) {
                var ovrMeth = (IMemberRef)writer.md.Overrides[0].MethodDeclaration;
                WriteToolTipType(output, ovrMeth.DeclaringType, false);
                output.Write('.', TextTokenType.Operator);
                WriteMethodName(output, method, ovrMeth.Name);
            }
            else
                WriteMethodName(output, method, method.Name);

            writer.WriteGenericArguments();
            writer.WriteMethodParameterList('(', ')');
        }