我希望在PerWebRequest事件处理程序上使用life注册一个类的现有实例。我使用的是ASP.NET核心软件。我正在使用AspNetBoilerplate。
发布于 2018-04-02 12:11:14
您不能使用特定的生活方式进行注册现有实例:
注册实例忽略lifestyle:当您注册现有实例时,即使您指定了一种生活方式,它也将被忽略。此外,注册实例将为您设置实现类型,因此,如果您尝试手动执行,将引发异常。
您可以使用相当于PerWebRequest生活方式的类型注册一个类型:
IocManager.IocContainer.Register(Component.For<TestService>()
.LifestyleCustom<MsScopedLifestyleManager>());然后在事件处理程序中注入(或解析) TestService:
public MyEventHandler(TestService testService)
{
// ...
}备选方案:城堡温莎生活方式在dotnet核心web应用中的应用
ASP.NET核心有自己的“作用域”生命周期,即“每个请求”。参见它的文档:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection 用法示例: services.AddScoped(); 您应该在
ConfigureServices方法中在Startup类中这样做。
https://stackoverflow.com/questions/49609763
复制相似问题