C# 构造函数参数为单例的外部类的依赖项注入

C# 构造函数参数为单例的外部类的依赖项注入,c#,asp.net-core,dependency-injection,C#,Asp.net Core,Dependency Injection,我不熟悉.NETCore中的依赖项注入。 到目前为止,我使用的是接口,可以通过DI框架轻松地注入依赖项 现在,我有一个外部库,它保存mongo DB连接并提供必要的数据库操作调用 该类接受两个参数,即连接字符串和数据库名称。 由于MOQ可以在没有接口的情况下注入依赖项,所以我尝试添加以下代码 services.AddSingleton<MongoManager>(); 上述代码按预期工作,但它在应用程序启动时创建对象。 在其他情况下,当类第一次被请求时,.NETFramework会给

我不熟悉.NETCore中的依赖项注入。 到目前为止,我使用的是接口,可以通过DI框架轻松地注入依赖项

现在,我有一个外部库,它保存mongo DB连接并提供必要的数据库操作调用

该类接受两个参数,即连接字符串和数据库名称。 由于MOQ可以在没有接口的情况下注入依赖项,所以我尝试添加以下代码

services.AddSingleton<MongoManager>(); 上述代码按预期工作,但它在应用程序启动时创建对象。 在其他情况下,当类第一次被请求时,.NETFramework会给出它的实例,但在这里,它的创建并没有被任何应用程序请求。 当应用程序终止时,是否也会处理此对象?
当实例第一次请求时,是否有方法注册类并告诉框架将某些参数(如连接字符串、数据库名称等)传递给类。

您可以使用
services.AddTransient
service.AddScoped
控制作用域

当应用程序终止时,所有文件都将被处理

对不起,我误解了您的问题,您可以像这样将参数传递给方法

services.AddSingleton(x => new MongoManager(param1, param2));
Singleton生存期服务(AddSingleton)是在第一次请求时创建的(或者在运行Startup.ConfigureServices并使用服务注册指定实例时创建的)

在处理请求的应用程序中,当在应用程序关闭时处理ServiceProvider时,将处理单例服务


参考资料:

您可以通过使用
services.AddTransient
service.AddScoped
来控制作用域

当应用程序终止时,所有文件都将被处理

对不起,我误解了您的问题,您可以像这样将参数传递给方法

services.AddSingleton(x => new MongoManager(param1, param2));
Singleton生存期服务(AddSingleton)是在第一次请求时创建的(或者在运行Startup.ConfigureServices并使用服务注册指定实例时创建的)

在处理请求的应用程序中,当在应用程序关闭时处理ServiceProvider时,将处理单例服务

参考:

有一个接受
Func
的函数,它只在第一次需要时实例化单例:

services.AddSingleton(_ => new MongoManager(userName, database));
有一个函数接受
Func
,它仅在第一次需要时实例化单例:

services.AddSingleton(_ => new MongoManager(userName, database));

嗨,Vivek,我想在整个应用程序生命周期中使用mongo包装类的单个连接。因此不能使用AddTransient和AddScope。另外,我的问题是如何告诉framwork创建MongoWrapper类的对象,并在第一次通过其他类请求时传递连接字符串和数据库。你好,Vivek,我希望在整个应用程序生命周期中使用MongoWrapper类的单个连接。因此不能使用AddTransient和AddScope。我的问题是如何告诉framwork创建MongoWrapper类的对象,并在第一次通过其他类请求时传递连接字符串和数据库。