首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Castle.MicroKernel.Registration.Lifestyle.PerWebRequest中使用?

如何在Castle.MicroKernel.Registration.Lifestyle.PerWebRequest中使用?
EN

Stack Overflow用户
提问于 2018-04-02 10:43:35
回答 1查看 727关注 0票数 0

我希望在PerWebRequest事件处理程序上使用life注册一个类的现有实例。我使用的是ASP.NET核心软件。我正在使用AspNetBoilerplate。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-02 12:11:14

您不能使用特定的生活方式进行注册现有实例

注册实例忽略lifestyle:当您注册现有实例时,即使您指定了一种生活方式,它也将被忽略。此外,注册实例将为您设置实现类型,因此,如果您尝试手动执行,将引发异常。

您可以使用相当于PerWebRequest生活方式的类型注册一个类型:

代码语言:javascript
复制
IocManager.IocContainer.Register(Component.For<TestService>()
    .LifestyleCustom<MsScopedLifestyleManager>());

然后在事件处理程序中注入(或解析) TestService

代码语言:javascript
复制
public MyEventHandler(TestService testService)
{
    // ...
}

备选方案:城堡温莎生活方式在dotnet核心web应用中的应用

ASP.NET核心有自己的“作用域”生命周期,即“每个请求”。参见它的文档:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection 用法示例: services.AddScoped(); 您应该在ConfigureServices方法中在Startup类中这样做。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49609763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档