private void ShowArrays() { if (_dte.Mode == vsIDEMode.vsIDEModeDebug && _dte.Debugger.CurrentStackFrame != null) { if (_arraysPending && _toolActive) { _arraysPending = false; string language = _dte.Debugger.CurrentStackFrame.Language; switch (language) { case "C#": _arrayLoader = new CsArrayLoader(); break; case "F#": _arrayLoader = new FsArrayLoader(); break; case "Basic": _arrayLoader = new VbArrayLoader(); break; //case "C++": // arrayLoader = new CppArrayLoader(); // break; default: _arrayLoader = GetLanguageLoader(); if (_arrayLoader != null) { break; } ClearVisualizer(); Label msg = new Label { Content = string.Format("Sorry, currently {0} is not supported.", language) }; mainPanel.Children.Add(msg); return; } _parsers = new ParsersCollection(_arrayLoader, _loadedParsers); LoadScopeArrays(); } } }
public ParsersCollection(IArrayLoader arrayLoader, IEnumerable <Type> selectedParsers) { if (selectedParsers == null) { throw new ArgumentNullException(nameof(selectedParsers)); } _arrayLoader = arrayLoader ?? throw new ArgumentNullException(nameof(arrayLoader)); _parsers = new List <ITypeParser>(); foreach (Type parserType in selectedParsers) { AddParser((ITypeParser)Activator.CreateInstance(parserType)); } AddParser(new DefaultParser(arrayLoader)); //must be last! }
public DefaultParser(IArrayLoader arrayLoader) { this._arrayLoader = arrayLoader; }