@@ -47,7 +47,7 @@ public class ScriptExecutor : IScriptExecutor
4747
4848 public AssemblyReferences References { get ; private set ; }
4949
50- public ICollection < string > Namespaces { get ; private set ; }
50+ public IReadOnlyCollection < string > Namespaces { get ; private set ; }
5151
5252 public ScriptPackSession ScriptPackSession { get ; protected set ; }
5353
@@ -75,33 +75,24 @@ public ScriptExecutor(
7575 Guard . AgainstNullArgument ( "composer" , composer ) ;
7676
7777 References = new AssemblyReferences ( DefaultReferences ) ;
78- Namespaces = new Collection < string > ( ) ;
79- ImportNamespaces ( DefaultNamespaces ) ;
78+ Namespaces = new ReadOnlyCollection < string > ( DefaultNamespaces ) ;
8079 FileSystem = fileSystem ;
8180 FilePreProcessor = filePreProcessor ;
8281 ScriptEngine = scriptEngine ;
8382 Logger = logger ;
8483 ScriptLibraryComposer = composer ;
8584 }
8685
87- public void ImportNamespaces ( params string [ ] namespaces )
86+ public virtual void ImportNamespaces ( params string [ ] namespaces )
8887 {
8988 Guard . AgainstNullArgument ( "namespaces" , namespaces ) ;
90-
91- foreach ( var @namespace in namespaces )
92- {
93- Namespaces . Add ( @namespace ) ;
94- }
89+ Namespaces = new ReadOnlyCollection < string > ( Namespaces . Union ( namespaces ) . ToArray ( ) ) ;
9590 }
9691
97- public void RemoveNamespaces ( params string [ ] namespaces )
92+ public virtual void RemoveNamespaces ( params string [ ] namespaces )
9893 {
9994 Guard . AgainstNullArgument ( "namespaces" , namespaces ) ;
100-
101- foreach ( var @namespace in namespaces )
102- {
103- Namespaces . Remove ( @namespace ) ;
104- }
95+ Namespaces = new ReadOnlyCollection < string > ( Namespaces . Except ( namespaces ) . ToArray ( ) ) ;
10596 }
10697
10798 public virtual void AddReferences ( params Assembly [ ] assemblies )
@@ -151,9 +142,7 @@ public virtual void Initialize(
151142 public virtual void Reset ( )
152143 {
153144 References = new AssemblyReferences ( DefaultReferences ) ;
154- Namespaces . Clear ( ) ;
155- ImportNamespaces ( DefaultNamespaces ) ;
156-
145+ Namespaces = new ReadOnlyCollection < string > ( DefaultNamespaces ) ;
157146 ScriptPackSession . State . Clear ( ) ;
158147 }
159148
0 commit comments