我在 autofac 中编写了以下寄存器类型:
builder.RegisterType<NoteBookContext>()
.As<DbContext>()
.WithParameter(ResolvedParameter.ForNamed<DbContext>("connectionstring"));
事实上,我编写这段代码是为了使用连接字符串参数注入(inject) NoteBookContext。 (即:
new NoteBookContext(string connectionstring)
)
现在,如何在运行时传递参数值?
请您参考如下方法:
WithParameter
方法具有接受委托(delegate)进行动态实例化的重载。
第一个参数是选择要设置的参数的谓词,而第二个是参数值提供者:
builder.RegisterType<NoteBookContext>()
.As<DbContext>()
.WithParameter((pi, c) => pi.Name == "connectionstring",
(pi, c) => c.Resolve<IConnectionStringProvider>().ConnectionString);
见 Passing Parameters to Register从 Autofac 文档中获取更多详细信息。