1- using GitHub . Services ;
2- using Microsoft . TeamFoundation . Controls ;
1+ using Microsoft . TeamFoundation . Controls ;
32using System ;
43using System . Diagnostics ;
54
65namespace GitHub . Extensions
76{
7+ using Services ;
88 using VisualStudio ;
99
1010 public static class VSExtensions
1111 {
12+ static IUIProvider uiProvider = null ;
13+
1214 public static T TryGetService < T > ( this IServiceProvider serviceProvider ) where T : class
1315 {
1416 return serviceProvider . TryGetService ( typeof ( T ) ) as T ;
1517 }
1618
1719 public static object TryGetService ( this IServiceProvider serviceProvider , Type type )
1820 {
21+ var isRequestingMainProvider = type == typeof ( IUIProvider ) ;
22+ if ( uiProvider != null && isRequestingMainProvider )
23+ return uiProvider ;
24+
1925 var ui = serviceProvider as IUIProvider ;
2026 if ( ui != null )
2127 return ui . TryGetService ( type ) ;
2228 else
2329 {
2430 try
2531 {
26- return serviceProvider . GetService ( type ) ;
32+ var ret = serviceProvider . GetService ( type ) ;
33+ if ( isRequestingMainProvider )
34+ uiProvider = ret as IUIProvider ;
35+ return ret ;
2736 }
2837 catch ( Exception ex )
2938 {
@@ -35,15 +44,34 @@ public static object TryGetService(this IServiceProvider serviceProvider, Type t
3544
3645 public static T GetService < T > ( this IServiceProvider serviceProvider )
3746 {
38- return ( T ) serviceProvider . GetService ( typeof ( T ) ) ;
47+ var isRequestingMainProvider = typeof ( T ) == typeof ( IUIProvider ) ;
48+ if ( uiProvider != null && isRequestingMainProvider )
49+ return ( T ) uiProvider ;
50+
51+ var ret = serviceProvider . GetService ( typeof ( T ) ) ;
52+
53+ if ( isRequestingMainProvider )
54+ uiProvider = ret as IUIProvider ;
55+
56+ return ( T ) ret ;
3957 }
4058
4159 public static T GetExportedValue < T > ( this IServiceProvider serviceProvider )
4260 {
61+ var isRequestingMainProvider = typeof ( T ) == typeof ( IUIProvider ) ;
62+ if ( uiProvider != null && isRequestingMainProvider )
63+ return ( T ) uiProvider ;
64+
4365 var ui = serviceProvider as IUIProvider ;
4466 if ( ui != null )
4567 return ui . GetService < T > ( ) ;
46- return Services . ComponentModel . DefaultExportProvider . GetExportedValue < T > ( ) ;
68+ else
69+ {
70+ var ret = Services . ComponentModel . DefaultExportProvider . GetExportedValue < T > ( ) ;
71+ if ( isRequestingMainProvider )
72+ uiProvider = ret as IUIProvider ;
73+ return ( T ) ret ;
74+ }
4775 }
4876
4977 public static ITeamExplorerSection GetSection ( this IServiceProvider serviceProvider , Guid section )
0 commit comments