Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core Castle Windsor-依赖于在Castle外部创建的类_Asp.net Core_Dependency Injection_Inversion Of Control_Castle Windsor - Fatal编程技术网

Asp.net core Castle Windsor-依赖于在Castle外部创建的类

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是否已经内置了交叉布线,但除此之外,您可以通过以下方式实

Castle Windsor管理我对类
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有什么关系?@davidfoll
A
是一个审计对象,它监视请求过程中发生的一切,并将所有这些操作分组在一起。什么是审计对象?它与WebRequestLifestyle有什么关系?@davidfoll
A
是一个审计对象,它监视请求过程中发生的一切,并将所有这些操作分组在一起