2010-10-03 14 views
1

基本上我想要做的是注入什麼在HttpContext.Current.User每次我要求一個IPrincipal。這是StructureMap中的代碼:替代Unity中的默認和ConstructedBy方法

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

如何在Unity中實現相同?

回答

4

這可以使用Unity 2.0中的InjectionFactory或以前版本Unity中的StaticFactoryExtension來完成。

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