使用InjectionConstructor进行Unity参数注入

时间:2014-12-18 17:43:21

标签: c# dependency-injection unity-container

我想在运行时将一个GraphClient类型的对象注入我的MVC服务类。该对象具有Uri类型的参数,该参数基本上是我们希望查看的当前租户的Uri。我感到很困难的是,这对于初始加载非常有效,但是当我切换到不同的租户时,uri会继续注册第一个uri。这是有道理的。但是我想知道,有没有办法告诉Unity每次都在实例化时对参数进行参数注入?

以下是我的代码的修剪版本。

var container = new UnityContainer();
container.RegisterType(typeof(GraphClient), new InjectionConstructor(RootUri));

protected static Uri RootUri
{
   get
   {
      SessionWrapper wrapper = new SessionWrapper();
      cString = wrapper.CurrentTenantUri;

      return new Uri(cString);
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用InjectionFactory来完成您的目标。每次需要实例化GraphClient时,都会执行此操作。

container.RegisterType(typeof(GraphClient), 
                       new InjectionFactory(c => new GraphClient(RootUri)));