private void OpenScript(object parameter) { OpenFileDialog dialog = new OpenFileDialog() { Multiselect = false, InitialDirectory = ModuleCatalogPath, Filter = "Script files (.json)|*.json" }; var result = dialog.ShowDialog(); if (result != true) { return; } string filePath = dialog.FileName; string json = File.ReadAllText(filePath); if (string.IsNullOrWhiteSpace(json)) { return; } SyntaxTreeJsonSerializer _serializer = new SyntaxTreeJsonSerializer(); var knownTypes = _serializer.Binder.KnownTypes; foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies() .Where(a => a.FullName.StartsWith("OneCSharp") && a.GetName().Name.EndsWith("Model"))) { foreach (Type type in assembly.GetTypes() .Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(SyntaxNode)))) { knownTypes.Add(type.FullName, type); } } if (knownTypes.Count == 0) { return; } SyntaxNode syntaxNode = _serializer.FromJson(json); CodeEditor editor = new CodeEditor() { DataContext = SyntaxTreeController.Current.CreateSyntaxNode(null, syntaxNode) }; Shell.AddTabItem("SCRIPT FROM FILE", editor); }