我在 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 文档中获取更多详细信息。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!