object Create(IDocumentViewerToolTipProviderContext context, SourceLocal local)
        {
            var provider = context.Create();

            provider.SetImage(local);
            context.Decompiler.WriteToolTip(provider.Output, local);
            return(provider.Create());
        }
Esempio n. 2
0
        public void GetMethodInfo(ModuleTokenId key, out Parameter[] parameters, out Local[] locals, out SourceLocal[] decompilerLocals)
        {
            parameters       = null;
            locals           = null;
            decompilerLocals = null;

            foreach (var tab in documentTabService.VisibleFirstTabs)
            {
                if (parameters != null && decompilerLocals != null)
                {
                    break;
                }

                var uiContext          = tab.UIContext as IDocumentViewer;
                var methodDebugService = uiContext.TryGetMethodDebugService();
                if (methodDebugService == null)
                {
                    continue;
                }
                var info = methodDebugService.TryGetMethodDebugInfo(key);
                if (info == null)
                {
                    continue;
                }
                var method = info.Method;
                if (info.Locals.Length != 0 && method.Body != null)
                {
                    locals           = method.Body.Variables.ToArray();
                    decompilerLocals = new SourceLocal[method.Body.Variables.Count];
                    foreach (var v in info.Locals)
                    {
                        if ((uint)v.Local.Index >= decompilerLocals.Length)
                        {
                            continue;
                        }
                        decompilerLocals[v.Local.Index] = v;
                    }
                }

                parameters = method.Parameters.ToArray();
            }
        }