使用 InjectionConstructor 进行 Unity 参数注入

本文关键字:参数 注入 Unity 进行 InjectionConstructor 使用 | 更新日期: 2023-09-27 18:34:35

我想在运行时将 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);
    }
}

使用 InjectionConstructor 进行 Unity 参数注入

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

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