我想在运行时将一个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);
}
}
答案 0 :(得分:1)
您可以使用InjectionFactory来完成您的目标。每次需要实例化GraphClient时,都会执行此操作。
container.RegisterType(typeof(GraphClient),
new InjectionFactory(c => new GraphClient(RootUri)));