统一等价物为 Ninject's Bind.ToMethod of IPrincipal,IIdentity



我试图在Unity中复制以下Ninject语法,但没有任何运气:

Bind<IIdentity>().ToMethod(c => HttpContext.Current.User.Identity);

我想它应该是这样的:

IUnityContainer container;
...
container.RegisterType<IIdentity>(HttpContext.Current.User.Identity);

应该是怎样的?

虽然neontapir的答案可以工作,但这种扩展方法已经过时了。现在正确的做法是使用InjectionFactory:

container.RegisterType<IIdentity>(new InjectionFactory(u => HttpContext.Current.User.Identity));
container.RegisterInstance<IIdentity>(...);

我相信静态工厂扩展可以做到这一点。我对Unity已经生疏了。Seeman在。net 中的依赖注入是一个很好的资源。

最新更新