我正在构建一个在选项模式设计之后使用依赖注入的应用程序。我有一个名为DataManager
的自定义ORM类。当我创建DataManager
的实例时,我将连接字符串注入到类中,如下所示。
public class DataManager : CommonDataManager {
private readonly ConnectionStrings _connectionStrings;
public DataManager(IOptions<ConnectionStrings> options) {
this._connectionStrings = options.Value;
}
创建DataManager
对象时,我应该使用哪个参数?初始化代码应该是什么样的?
DataManager dm = new DataManager(?);
答案 0 :(得分:0)
DI集成意味着DI引擎将负责创建对象。因此,不应直接初始化您的类,而应该执行以下操作。使用DI注册您的DataManager
,以便稍后可以从serviceCollection实例化它:
在您的ConfigureServices方法中添加以下内容:
services.AddTransient<DataManager>();
请注意,您应该决定实例的生命周期(我在这里选择了Transient,但这取决于您 - Singletone
,Scoped
,...)。
然后当您需要实例化它时,请按以下方式调用:
serviceProvider.GetRequiredService<DataManager>();
但是,如果您想采用自己的方法并希望自己实例化DataManager
,则应从IoC容器中获取参数,如下所示:
DataManager dm = new DataManager(sp.GetRequiredService<IOptions<ConnectionStrings>>());
注意:在这两种情况下,我都假设您已经在Startup.ConfigureServices
方法中使用DI注册了选项。