void ScanTextEditors() { if (TextEditors == null) { TextEditors = new List <TextEditorBase>(); var list = from type in typeof(TextEditorBase).Assembly.GetTypes() where type.IsSubclassOf(typeof(TextEditorBase)) select type; foreach (Type t in list) { if (t == typeof(PlugInTextEditorWrapper) || t == typeof(ValueExpression.ValueExpressionEditor)) { continue; } if (t != typeof(ITextEditor)) { TextEditorBase TE = (TextEditorBase)Activator.CreateInstance(t); TextEditors.Add(TE); } } // Add all plugins TextEditors ObservableList <PluginPackage> Plugins = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems <PluginPackage>(); foreach (PluginPackage PP in Plugins) { foreach (ITextEditor TE in PP.GetTextFileEditors()) { PlugInTextEditorWrapper w = new PlugInTextEditorWrapper(TE); //PlugInTextEditorWrapper f = (PlugInTextEditorWrapper)TextEditors.Where(x => x is PlugInTextEditorWrapper ? ((PlugInTextEditorWrapper)x).GetEditorID() == w.GetEditorID() : false).FirstOrDefault(); TextEditors.Add(w); } } } }