如何在运行时更新Unity中的构造函数参数值

时间:2014-01-16 01:39:31

标签: c# unity-container

我有以下Unity配置部分

<register type="IDbContext" mapTo="ProjectEntities" name="ProjectEntitiesContext" >
          <constructor>
            <param name="connectionString" value="conString" />
          </constructor>

哪个效果很好。我在ProjectEntities类的connectionString参数中得到“conString”的值。

但是,我想要做的是更改代码中conString参数的值。

有点像

   myIocContaniner.registratons.ProjectEntities.Constructor.value = "Different Connection String"

在创建时,将“Different Connection String”传递给ProjectEntities构造函数。

我想解决的问题是使.net WebApi根据请求与不同的数据库进行交互。

1 个答案:

答案 0 :(得分:0)

我假设你每次使用它都会解决你的IDbContext(这样的事情)?

IDbContext myDbContext = myIocContainer.Resolve<IDbContext>("ProjectEntitiesContext");
// Some code here using myDbContext

您只需重新映射Unity中的类型。

myIocContainer.RegisterType<IDbContext, ProjectEntities>("ProjectEntitiesContext", new InjectionConstructor("Different Connection String"));

下次解析它时,它将是带有新注入的构造函数参数的新映射类型。

这也假设您只有连接字符串作为构造函数的参数。如果您有其他参数,则需要相应地调整InjectionConstructor。