我正在尝试在布局视图中访问由ninject创建的对象,但我不知道如何访问它们。
以下是我迄今为止所尝试的内容的简要概述: -
由服务创建并绑定它们:
public interface IService
{
void SomeMethod();
}
public class Service : IService
{
public void SomeMethod
{
}
}
Bind<IService>().To<Service>();
创建一个静态类并使用[Inject]
属性:
public static class MasterLayout
{
[Inject]
public static IService Service { private get; set; }
public static void CallSomeMethod();
{
Service.SomeMethod
}
}
每当我从我的主视图或部分视图中调用MasterLayout.CallSomeMethod()
时,Service
字段始终为空。
这是否可能,或者我应该创建一个基本控制器并让其他控制器继承它,我可以在那里设置要在主视图和部分视图中使用的值?有没有更好的方法来实现这一目标?
答案 0 :(得分:1)
如果与构造函数注入一起使用,Ninject是否有效?
(见http://ninject.codeplex.com/wikipage?title=Injection%20Patterns)
像
这样的东西 IUnitOfWork UnitOfWork;
public AccountController(IUnitOfWork unitOfWork)
{
this.UnitOfWork = unitOfWork;
}
你在这里查过吗?
bind to property always return null
当你说“在每一页上”时,你的意思是“在每个控制器上”?
如果是,我认为您可以创建一个BaseController类,并且所有控制器都应该继承它。我正在使用这种方法。
答案 1 :(得分:0)
您必须创建一个custom controller factory才能让Ninject创建控制器。一旦你这样做,这将有效。这个可能还有an extension。