我知道这个问题在Stack Overflow上得到了回答,但我希望得到一个"explain it like I'm a Golden Retriever"的解释,因为很多术语(和一些概念)对我来说都不熟悉.

MauiProgram.cs中,需要放入如下所示的代码行:

            builder.Services.AddTransient<SecondPageViewModel>();
            builder.Services.AddSingleton<IAlertService, AlertService>();

我有no idea个小时该用AddTransient还是AddSingleton.

我理解Singleton设计模式,我还有点理解依赖注入,但我不理解这些代码行是如何处理依赖注入的,坦白地说,我也不理解文档.

我的怀疑是,当你离开一个页面时,它是Transient,页面的状态/可能与它相关的一些数据被删除,所以当你导航回它时,它就像第一次显示一样.

但我可能错了.

推荐答案

以下是生命周期的定义:

  • 100意味着对象的生命周期与应用程序的生命周期相同.

  • 100表示每次请求临时服务时都会创建一个新对象.

  • 100意味着有限的生命周期,时间长短取决于应用程序的类型.对于Web服务,通常是从接收HTTP请求到发送HTTP响应.在毛伊岛的应用程序中,我不知道.也许就像你说的那一页?

Cleanup

还有一些事情需要国际奥委会的容器来处理.而且他们正在释放资源.这是通过IDisposable接口实现的.所有单例和作用域服务都将得到清理.

对于临时工来说,这就更难了,因为IOC容器就像是他们的工厂一样(即每次都会创建一个新的容器,而不知道他们将使用多长时间).

Csharp相关问答推荐

EF Core Fluent API中定义的多对多关系

`Task`只有在C#中等待时才会运行吗?

==和Tuple对象的相等<>

. NET 8控制台应用程序DI错误无法解析Microsoft. Extension. Logging. ILoggerFactory类型的服务'''

. net依赖注入如何避免服务类中的新

模型绑定RazorPage表单

如何在Parall.ForEachAsync中使用CancerationTokenSource

为什么在使用动态obj+类obj时会调用串联?

如何捕获对ASP.NET核心应用程序的所有请求并将其发送到一个页面

在使用Audit.NET的AuditTrail实现中,如何逐月将数据摄取到AzureTableStorage?

从VS调试器而不是测试资源管理器运行的调试NUnitDotNet测试

在.NET 7.0 API控制器项目中通过继承和显式调用基类使用依赖项注入

如何使用Npgsql从SELECT获得所有查询结果

Visual Studio 17.8.0制表符自动完成问题--三缩进

映射器-如何映射到多个实体

根据优先级整理合同列表

使用C#代码和SQL SERVER中的相同证书签名会产生不同的结果

与Visual Studio 2022中的.NET框架相比,如何在.NET Core 6中获取错误输出的窗口句柄

无法创建&Quot;&Quot;类型的实例,因为无法将一个或多个参数绑定到

如何提高C#中比较大 struct 的性能?