替代Unity中的TheDefault和ConstructedBy方法

时间:2010-10-03 11:38:11

标签: inversion-of-control unity-container

基本上我想做的是每当我要求IPrincipal时注入HttpContext.Current.User中的内容。这是StructureMap中的代码:

ForRequestedType<IPrincipal>()
  .CacheBy(InstanceScope.Hybrid)
  .TheDefault.Is.ConstructedBy(ctx => HttpContext.Current.User)

如何在Unity中实现相同目标?

1 个答案:

答案 0 :(得分:4)

这可以使用Unity 2.0中的InjectionFactory或Unity早期版本中的StaticFactoryExtension来完成。

 var container = new UnityContainer(); // unity 2.0
 container.RegisterType<IPrincipal>(new InjectionFactory(_ => HttpContext.Current.User));