@@ -51,7 +51,7 @@ public class ScriptExecutor : IScriptExecutor
5151
5252 public AssemblyReferences References { get ; private set ; }
5353
54- public ICollection < string > Namespaces { get ; private set ; }
54+ public IReadOnlyCollection < string > Namespaces { get ; private set ; }
5555
5656 public ScriptPackSession ScriptPackSession { get ; protected set ; }
5757
@@ -97,8 +97,7 @@ public ScriptExecutor(
9797 Guard . AgainstNullArgument ( "composer" , composer ) ;
9898
9999 References = new AssemblyReferences ( DefaultReferences ) ;
100- Namespaces = new Collection < string > ( ) ;
101- ImportNamespaces ( DefaultNamespaces ) ;
100+ Namespaces = new ReadOnlyCollection < string > ( DefaultNamespaces ) ;
102101 FileSystem = fileSystem ;
103102 FilePreProcessor = filePreProcessor ;
104103 ScriptEngine = scriptEngine ;
@@ -109,24 +108,16 @@ public ScriptExecutor(
109108 ScriptLibraryComposer = composer ;
110109 }
111110
112- public void ImportNamespaces ( params string [ ] namespaces )
111+ public virtual void ImportNamespaces ( params string [ ] namespaces )
113112 {
114113 Guard . AgainstNullArgument ( "namespaces" , namespaces ) ;
115-
116- foreach ( var @namespace in namespaces )
117- {
118- Namespaces . Add ( @namespace ) ;
119- }
114+ Namespaces = new ReadOnlyCollection < string > ( Namespaces . Union ( namespaces ) . ToArray ( ) ) ;
120115 }
121116
122- public void RemoveNamespaces ( params string [ ] namespaces )
117+ public virtual void RemoveNamespaces ( params string [ ] namespaces )
123118 {
124119 Guard . AgainstNullArgument ( "namespaces" , namespaces ) ;
125-
126- foreach ( var @namespace in namespaces )
127- {
128- Namespaces . Remove ( @namespace ) ;
129- }
120+ Namespaces = new ReadOnlyCollection < string > ( Namespaces . Except ( namespaces ) . ToArray ( ) ) ;
130121 }
131122
132123 public virtual void AddReferences ( params Assembly [ ] assemblies )
@@ -176,9 +167,7 @@ public virtual void Initialize(
176167 public virtual void Reset ( )
177168 {
178169 References = new AssemblyReferences ( DefaultReferences ) ;
179- Namespaces . Clear ( ) ;
180- ImportNamespaces ( DefaultNamespaces ) ;
181-
170+ Namespaces = new ReadOnlyCollection < string > ( DefaultNamespaces ) ;
182171 ScriptPackSession . State . Clear ( ) ;
183172 }
184173
0 commit comments