Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用InjectionConstructor的统一参数注入_C#_Dependency Injection_Unity Container - Fatal编程技术网

C# 使用InjectionConstructor的统一参数注入

C# 使用InjectionConstructor的统一参数注入,c#,dependency-injection,unity-container,C#,Dependency Injection,Unity Container,我想在运行时将GraphClient类型的对象注入我的MVC服务类。这个对象有一个Uri类型的参数,它基本上就是我们希望查看的当前租户的Uri。我感到困惑的是,这对于初始加载非常有效,但是当我切换到不同的租户时,uri会与注册的第一个uri保持一致。这是有道理的。然而,我想知道,有没有一种方法可以告诉Unity在每次实例化时都进行这个依赖项的参数注入 下面是我的代码的精简版本 var container = new UnityContainer(); container.RegisterType

我想在运行时将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);
    }
}
你可以使用一个工具来完成你所追求的目标。每次需要实例化GraphClient时,都会执行此操作

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

耶!谢谢泰勒!