c# - 如何在autofac中的解析时间上传递参数

标签 c# autofac

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

关于c# - 如何在autofac中的解析时间上传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36835865/

相关文章:

c# - 基于通用类型约束在 Autofac 中有条件地应用通用装饰器

c# - 任意方式指定xsi :type =""?中使用的XML字符串

c# - 如何淡出并破坏负载音频

c# - 命名空间前缀 "system"未定义

c# - 在局部 View 中使用分页,asp.net mvc

.net - 如何将策略模式与依赖注入(inject)(autofac)一起使用

asp.net-mvc-4 - Autofac 和 ASP .Net MVC 4 Web API

javascript - 如何从 javascript(rhino) 中的 C# 类库访问公共(public)方法

c# - Autofac 模块缺少准备事件

c# - Autofac:使用 in 和 out 类型参数解析变体类型