@@ -47,7 +47,7 @@ public class ExtensionManager
4747 // List of ExtensionNodes for all extensions discovered.
4848 private readonly List < ExtensionNode > _extensions = new List < ExtensionNode > ( ) ;
4949
50- private bool _extensionsAreLoaded ;
50+ private bool _extensionsAreInstalled ;
5151
5252 // AssemblyTracker is a List of candidate ExtensionAssemblies, with built-in indexing
5353 // by file path and assembly name, eliminating the need to update indices separately.
@@ -173,15 +173,7 @@ public virtual void FindExtensionPoints(params Assembly[] targetAssemblies)
173173 /// <summary>
174174 /// Gets an enumeration of all installed Extensions.
175175 /// </summary>
176- public IEnumerable < ExtensionNode > Extensions
177- {
178- get
179- {
180- LoadExtensions ( ) ;
181-
182- return _extensions . ToArray ( ) ;
183- }
184- }
176+ public IEnumerable < ExtensionNode > Extensions => _extensions . ToArray ( ) ;
185177
186178 /// <summary>
187179 /// Find ExtensionAssemblies for a host assembly using
@@ -237,34 +229,33 @@ public void FindExtensionAssemblies(string startDir)
237229 /// </summary>
238230 public IEnumerable < T > GetExtensions < T > ( )
239231 {
240- foreach ( var node in GetExtensionNodes < T > ( ) )
241- yield return ( T ) node . ExtensionObject ;
232+ foreach ( ExtensionNode node in GetExtensionNodes < T > ( ) )
233+ if ( node . ExtensionObject is T )
234+ yield return ( T ) node . ExtensionObject ;
242235 }
243236
244237 /// <summary>
245238 /// Enable or disable an extension
246239 /// </summary>
247240 public void EnableExtension ( string typeName , bool enabled )
248241 {
249- LoadExtensions ( ) ;
250-
251242 foreach ( var node in _extensions )
252243 if ( node . TypeName == typeName )
253244 node . Enabled = enabled ;
254245 }
255246
256247 /// <summary>
257- /// We can only load extensions after all candidate assemblies are identified.
248+ /// We can only install extensions after all candidate assemblies are identified.
258249 /// This method may be called by the user after all "Find" calls are complete.
259250 /// If the user fails to call it and subsequently tries to examine extensions
260251 /// using other ExtensionManager properties or methods, it will be called
261252 /// but calls not going through ExtensionManager may fail.
262253 /// </summary>
263- public void LoadExtensions ( )
254+ public void InstallExtensions ( )
264255 {
265- if ( ! _extensionsAreLoaded )
256+ if ( ! _extensionsAreInstalled )
266257 {
267- _extensionsAreLoaded = true ;
258+ _extensionsAreInstalled = true ;
268259
269260 foreach ( var candidate in _assemblyTracker )
270261 FindExtensionsInAssembly ( candidate ) ;
@@ -280,12 +271,13 @@ public void LoadExtensions()
280271 /// </summary>
281272 public IEnumerable < ExtensionNode > GetExtensionNodes ( string path )
282273 {
283- LoadExtensions ( ) ;
284-
285- var ep = GetExtensionPoint ( path ) ;
286- if ( ep is not null )
287- foreach ( var node in ep . Extensions )
274+ foreach ( var node in _extensions )
275+ if ( node . Path == path )
288276 yield return node ;
277+ //var ep = GetExtensionPoint(path);
278+ //if (ep is not null)
279+ // foreach (var node in ep.Extensions)
280+ // yield return node;
289281 }
290282
291283 /// <summary>
@@ -294,8 +286,6 @@ public IEnumerable<ExtensionNode> GetExtensionNodes(string path)
294286 /// <param name="path">The identifying path for an ExtensionPoint</param>
295287 public ExtensionNode ? GetExtensionNode ( string path )
296288 {
297- LoadExtensions ( ) ;
298-
299289 var ep = GetExtensionPoint ( path ) ;
300290
301291 return ep is not null && ep . Extensions . Count > 0 ? ep . Extensions [ 0 ] : null ;
@@ -307,8 +297,6 @@ public IEnumerable<ExtensionNode> GetExtensionNodes(string path)
307297 /// <param name="includeDisabled">If true, disabled nodes are included</param>
308298 public IEnumerable < ExtensionNode > GetExtensionNodes < T > ( bool includeDisabled = false )
309299 {
310- LoadExtensions ( ) ;
311-
312300 var ep = GetExtensionPoint ( typeof ( T ) ) ;
313301 if ( ep is not null )
314302 foreach ( var node in ep . Extensions )
0 commit comments