@@ -45,6 +45,7 @@ internal sealed class ImportTreeProvider : ProjectTreeProviderBase, IProjectTree
4545 private readonly UnconfiguredProject _project ;
4646 private readonly IActiveConfiguredProjectSubscriptionService _projectSubscriptionService ;
4747 private readonly IUnconfiguredProjectTasksService _unconfiguredProjectTasksService ;
48+ private readonly IActiveConfiguredValue < IConfiguredProjectExports > _activeConfiguredProjectExports ;
4849
4950 private DisposableBag ? _subscriptions ;
5051 private bool _showAllFiles ;
@@ -54,12 +55,14 @@ internal ImportTreeProvider(
5455 IProjectThreadingService threadingService ,
5556 UnconfiguredProject project ,
5657 IActiveConfiguredProjectSubscriptionService projectSubscriptionService ,
57- IUnconfiguredProjectTasksService unconfiguredProjectTasksService )
58+ IUnconfiguredProjectTasksService unconfiguredProjectTasksService ,
59+ IActiveConfiguredValue < IConfiguredProjectExports > activeConfiguredProjectExports )
5860 : base ( threadingService , project , useDisplayOrdering : true )
5961 {
6062 _project = project ;
6163 _projectSubscriptionService = projectSubscriptionService ;
6264 _unconfiguredProjectTasksService = unconfiguredProjectTasksService ;
65+ _activeConfiguredProjectExports = activeConfiguredProjectExports ;
6366 }
6467
6568 public override string ? GetPath ( IProjectTree node )
@@ -346,9 +349,7 @@ void TearDownTree()
346349
347350 protected override ConfiguredProjectExports GetActiveConfiguredProjectExports ( ConfiguredProject newActiveConfiguredProject )
348351 {
349- Requires . NotNull ( newActiveConfiguredProject ) ;
350-
351- return GetActiveConfiguredProjectExports < MyConfiguredProjectExports > ( newActiveConfiguredProject ) ;
352+ return ( ConfiguredProjectExports ) _activeConfiguredProjectExports . Value ;
352353 }
353354
354355 protected override void Dispose ( bool disposing )
@@ -361,13 +362,14 @@ protected override void Dispose(bool disposing)
361362 base . Dispose ( disposing ) ;
362363 }
363364
364- [ Export ]
365- private sealed class MyConfiguredProjectExports : ConfiguredProjectExports
365+ [ Export ( typeof ( IConfiguredProjectExports ) ) ]
366+ [ method: ImportingConstructor ]
367+ private sealed class MyConfiguredProjectExports ( ConfiguredProject configuredProject )
368+ : ConfiguredProjectExports ( configuredProject ) ,
369+ IConfiguredProjectExports
366370 {
367- [ ImportingConstructor ]
368- public MyConfiguredProjectExports ( ConfiguredProject configuredProject )
369- : base ( configuredProject )
370- {
371- }
372371 }
372+
373+ // NOTE this interface is needed to work around accessiblity issues when making MyConfiguredProjectExports non-private
374+ internal interface IConfiguredProjectExports { }
373375}
0 commit comments