.net core 访问启动类中的注册对象
我正在Nancy中编写一个服务,并使用一些中间件来监视该服务:.net core 访问启动类中的注册对象,.net-core,nancy,tinyioc,.net Core,Nancy,Tinyioc,我正在Nancy中编写一个服务,并使用一些中间件来监视该服务: app.UseOwin(buildFunc => { var log = ConfigureLogger(); buildFunc.UseMonitoringAndLogging(log, HealthCheck); buildFunc.UseNancy(); }); 中间件配置为使用Startup类中定义的HealthCheck()函数:
app.UseOwin(buildFunc =>
{
var log = ConfigureLogger();
buildFunc.UseMonitoringAndLogging(log, HealthCheck);
buildFunc.UseNancy();
});
中间件配置为使用Startup
类中定义的HealthCheck()
函数:
public async Task<bool> HealthCheck()
{
return await SomeRepo.HealthCheck();
}
public异步任务HealthCheck()
{
return wait SomeRepo.HealthCheck();
}
SomeRepo
有一个HealthCheck()
方法,用于查询数据库以确认其可用/响应。但是,如何将SomeRepo
注入Startup
类,或者访问容器以解析SomeRepo
?此时,您仍然处于Owin中,而不是管道中。你在哪台主机上运行?如果您使用的是aspnetcore
方法,则可以在RegisterServices()
方法中注册您的DEP,它将处理方法中的注入。您可以使用Autofac
或StructureMap
,这样您就可以与Nancy共享您的容器了。此时,您仍然处于Owin,而不是Nancy管道中。你在哪台主机上运行?如果您使用的是aspnetcore
方法,则可以在RegisterServices()
方法中注册您的DEP,它将处理方法中的注入。您可以使用Autofac
或StructureMap
与Nancy共享您的容器。谢谢-我已从TinyIoC迁移到SimpleInjector,以便注册装饰师。我正在SimpleInjector容器中的Startup.cs
中注册我的回购。Nancy有一个设计原则,即容器不能直接从模块访问。作为一种解决方法,我已将容器保存到公共静态属性,但我希望有更好的选择。您可以将容器传递给bootstapper,并重写GetApplicationContainer()
以返回您的instanceThanks-我已从TinyIoC移动到SimpleInjector,以便注册装饰程序。我正在SimpleInjector容器中的Startup.cs
中注册我的回购。Nancy有一个设计原则,即容器不能直接从模块访问。作为一种解决方法,我已将容器保存到公共静态属性,但我希望有更好的选项。您可以将容器传递给bootstapper,并重写GetApplicationContainer()
以返回您的实例