Skip to content

Commit a2ed103

Browse files
committed
Add IAppHostNetCore interface + APIs for accessing primary .Core deps
1 parent 69c115f commit a2ed103

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

src/ServiceStack.Kestrel/AppSelfHostBase.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
namespace ServiceStack
2323
{
24-
public abstract class AppSelfHostBase : ServiceStackHost, IConfigureServices, IRequireConfiguration
24+
public abstract class AppSelfHostBase : ServiceStackHost, IAppHostNetCore, IConfigureServices, IRequireConfiguration
2525
{
2626
public IConfiguration Configuration { get; set; }
2727

@@ -35,6 +35,10 @@ protected AppSelfHostBase(string serviceName, params Assembly[] assembliesWithSe
3535
public IApplicationBuilder App => app;
3636
public IServiceProvider ApplicationServices => app?.ApplicationServices;
3737

38+
private IHostingEnvironment env;
39+
public IHostingEnvironment HostingEnvironment => env
40+
?? (env = app?.ApplicationServices.GetService<IHostingEnvironment>());
41+
3842
public virtual void Bind(IApplicationBuilder app)
3943
{
4044
this.app = app;

src/ServiceStack/AppHostBase.NetCore.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
namespace ServiceStack
2525
{
26-
public abstract class AppHostBase : ServiceStackHost, IConfigureServices, IRequireConfiguration
26+
public abstract class AppHostBase : ServiceStackHost, IAppHostNetCore, IConfigureServices, IRequireConfiguration
2727
{
2828
protected AppHostBase(string serviceName, params Assembly[] assembliesWithServices)
2929
: base(serviceName, assembliesWithServices)
@@ -274,8 +274,19 @@ public virtual void Configure(IServiceCollection services) {}
274274
public IConfiguration Configuration { get; set; }
275275
}
276276

277+
public interface IAppHostNetCore : IAppHost, IRequireConfiguration
278+
{
279+
IApplicationBuilder App { get; }
280+
IHostingEnvironment HostingEnvironment { get; }
281+
}
282+
277283
public static class NetCoreAppHostExtensions
278284
{
285+
public static IConfiguration GetConfiguration(this IAppHost appHost) => ((IAppHostNetCore)appHost).Configuration;
286+
public static IApplicationBuilder GetApp(this IAppHost appHost) => ((IAppHostNetCore)appHost).App;
287+
public static IServiceProvider GetApplicationServices(this IAppHost appHost) => ((IAppHostNetCore)appHost).App.ApplicationServices;
288+
public static IHostingEnvironment GetHostingEnvironment(this IAppHost appHost) => ((IAppHostNetCore)appHost).HostingEnvironment;
289+
279290
public static IApplicationBuilder UseServiceStack(this IApplicationBuilder app, AppHostBase appHost)
280291
{
281292
appHost.Bind(app);

0 commit comments

Comments
 (0)