Asp.net core Castle Windsor-依赖于在Castle外部创建的类
Castle Windsor管理我对类Asp.net core Castle Windsor-依赖于在Castle外部创建的类,asp.net-core,dependency-injection,inversion-of-control,castle-windsor,Asp.net Core,Dependency Injection,Inversion Of Control,Castle Windsor,Castle Windsor管理我对类B、C、D等的依赖关系。它们非常复杂,所以我有温莎帮我照顾它们是件好事B、C、D、ect依赖于a,因为.net核心缺少WebRequestLifestyle,所以必须在Castle Windsor之外实例化 我有没有办法在解析时向Castle Windsor提供类为a的对象?在ASP.NET核心中,WebRequestLifestyle称为范围。您可以通过“交叉连接”依赖项来检索它。我不确定Castle是否已经内置了交叉布线,但除此之外,您可以通过以下方式实
B
、C
、D
等的依赖关系。它们非常复杂,所以我有温莎帮我照顾它们是件好事B
、C
、D
、ect依赖于a
,因为.net核心缺少WebRequestLifestyle
,所以必须在Castle Windsor之外实例化
我有没有办法在解析时向Castle Windsor提供类为
a
的对象?在ASP.NET核心中,WebRequestLifestyle
称为范围。您可以通过“交叉连接”依赖项来检索它。我不确定Castle是否已经内置了交叉布线,但除此之外,您可以通过以下方式实现:
public void配置服务(IServiceCollection服务)
{
//GetRequestService方法需要IHttpContextAccessor。
services.AddSingleton();
//这里的日常用品
}
公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
//需要注入的跨线ASP.NET核心服务
container.Register(Component.For())
.UsingFactoryMethod(=>app.GetRequiredRequestService());
//这里的日常用品
}
在本例中,GetRequestService
是iaapplicationbuilder
上的自定义扩展方法,定义如下:
public static T GetRequiredRequestService(此IAApplicationBuilder)
T:在哪里上课
{
var accessor=builder.ApplicationServices.GetService();
var context=accessor.HttpContext??抛出新的InvalidOperationException(
“没有HttpContext。”);
返回context.RequestServices.GetRequiredService();
}
在ASP.NET核心中,WebRequestLifestyle
被称为作用域
。您可以通过“交叉连接”依赖项来检索它。我不确定Castle是否已经内置了交叉布线,但除此之外,您可以通过以下方式实现:
public void配置服务(IServiceCollection服务)
{
//GetRequestService方法需要IHttpContextAccessor。
services.AddSingleton();
//这里的日常用品
}
公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
//需要注入的跨线ASP.NET核心服务
container.Register(Component.For())
.UsingFactoryMethod(=>app.GetRequiredRequestService());
//这里的日常用品
}
在本例中,GetRequestService
是iaapplicationbuilder
上的自定义扩展方法,定义如下:
public static T GetRequiredRequestService(此IAApplicationBuilder)
T:在哪里上课
{
var accessor=builder.ApplicationServices.GetService();
var context=accessor.HttpContext??抛出新的InvalidOperationException(
“没有HttpContext。”);
返回context.RequestServices.GetRequiredService();
}
什么是一个?它与WebRequestLifestyle有什么关系?@davidfollA
是一个审计对象,它监视请求过程中发生的一切,并将所有这些操作分组在一起。什么是审计对象?它与WebRequestLifestyle有什么关系?@davidfollA
是一个审计对象,它监视请求过程中发生的一切,并将所有这些操作分组在一起