diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-04-22 02:08:25 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-04-22 02:08:25 +0300 |
| commit | 499e0a03bb41e2330a47ccca83e6e6dfe7c5a634 (patch) | |
| tree | 5d5d7866e33c1ae8a55cfa67be65848a25be7ab4 /Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs | |
| parent | 97a784b6ce43960bdb92465b08f26d3562a4f202 (diff) | |
| download | Tango-499e0a03bb41e2330a47ccca83e6e6dfe7c5a634.tar.gz Tango-499e0a03bb41e2330a47ccca83e6e6dfe7c5a634.zip | |
Scripting.
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs')
| -rw-r--r-- | Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs index 31be3a714..85caf4706 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs @@ -18,7 +18,7 @@ using System.IO; namespace Tango.Scripting.Basic { - public class Project : ExtendedObject + public class Project<T> : ExtendedObject where T : IContext { private String _name; public String Name @@ -43,6 +43,7 @@ namespace Tango.Scripting.Basic public ObservableCollection<Script> Scripts { get; set; } + [JsonIgnore] public ObservableCollection<IScriptSource> AdditionalScripts { get @@ -78,16 +79,16 @@ namespace Tango.Scripting.Basic } } - public static Project New(String name) + public static Project<T> New(String name) { - Project p = new Project(); + Project<T> p = new Project<T>(); p.Name = name; p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(String) }); p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Enumerable) }); p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Form) }); - p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Project) }); + p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Project<T>) }); return p; } @@ -140,14 +141,14 @@ namespace Tango.Scripting.Basic } else { - code += Environment.NewLine + Environment.NewLine + "return new Program().OnExecute(GlobalContext);"; + code += Environment.NewLine + Environment.NewLine + "new Program().OnExecute(GlobalContext);"; mainScriptCode = code; } } var scriptOptions = ScriptOptions.Default.WithReferences(ReferenceAssembliesLoaded); - var s = CSharpScript.Create<object>(mainScriptCode, scriptOptions, typeof(GlobalObject)); + var s = CSharpScript.Create<object>(mainScriptCode, scriptOptions, typeof(GlobalObject<T>)); result.Script = s; var compileResults = s.Compile(); @@ -164,7 +165,7 @@ namespace Tango.Scripting.Basic cError.Message = error.GetMessage(); cError.Severity = error.Severity; var line = error.Location.GetMappedLineSpan(); - cError.Line = line.StartLinePosition.Line + 1 + (errorScript != null ? errorScript.LoadCount : 0); + cError.Line = line.StartLinePosition.Line + 1 - (errorScript != null ? errorScript.LoadCount : 0); cError.Column = line.StartLinePosition.Character + 1; cError.Length = line.EndLinePosition.Character - line.StartLinePosition.Character; result.Errors.Add(cError); @@ -174,7 +175,7 @@ namespace Tango.Scripting.Basic }); } - public async Task<ProjectSession> Run(IContext context) + public async Task<ProjectSession<T>> Run(T context) { var result = await Compile(); @@ -184,9 +185,9 @@ namespace Tango.Scripting.Basic } Thread scriptThread = null; - ProjectSession session = null; + ProjectSession<T> session = null; - session = new ProjectSession(this, () => + session = new ProjectSession<T>(this, () => { scriptThread.Abort(); }); @@ -195,7 +196,7 @@ namespace Tango.Scripting.Basic { try { - var runResult = result.Script.RunAsync(globals: new GlobalObject() { GlobalContext = context }).Result; + var runResult = result.Script.RunAsync(globals: new GlobalObject<T>() { GlobalContext = context }).Result; session.Completed(runResult.ReturnValue); } catch (ThreadAbortException) |
