.net core 访问启动类中的注册对象

.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()函数:

我正在Nancy中编写一个服务,并使用一些中间件来监视该服务:

    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()
以返回您的实例