gpt4 book ai didi

c# - 在 Unity 中的类型之间共享生命周期管理器?

转载 作者:太空狗 更新时间:2023-10-29 20:17:01 26 4
gpt4 key购买 nike

我在 Unity 文档中看到的示例让您通过内嵌 new LifetimeManager() 来指定生命周期管理器。所以我有这段代码:

container.RegisterType<ApplicationDbContext>(new PerRequestLifetimeManager());

container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(new PerRequestLifetimeManager(),
new InjectionConstructor(typeof (ApplicationDbContext)));

container.RegisterType<UserManager<ApplicationUser>>(new PerRequestLifetimeManager());

很好,但我想知道我为什么要创建这么多实例。我有什么理由不应该这样写吗?

var lifetimeManager = new PerRequestLifetimeManager();

container.RegisterType<ApplicationDbContext>(lifetimeManager);

container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(lifetimeManager,
new InjectionConstructor(typeof (ApplicationDbContext)));

container.RegisterType<UserManager<ApplicationUser>>(lifetimeManager);

这看起来很明显,但是通过 PDF 阅读所有示例都是以前的样式,没有评论,所以我想知道我是否不了解它是如何工作的。

最佳答案

不,你不能这样做。如果您尝试以下操作,您会发现您的应用程序抛出异常:

The lifetime manager is already registered. Lifetime managers cannot be reused, please create a new one.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: The lifetime manager is already registered. Lifetime managers cannot be reused, please create a new one.

关于c# - 在 Unity 中的类型之间共享生命周期管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22639084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com