2

我试图在我的布局视图中访问由 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字段始终为空。

这是否可能,或者我应该创建一个基本控制器并让其他控制器从它继承,我可以设置这些值以在主视图和部分视图中使用?有没有更好的方法来实现这一目标?

4

2 回答 2

1

如果与构造器注入一起使用,Ninject 是否有效?

(见http://ninject.codeplex.com/wikipage?title=Injection%20Patterns

就像是

    IUnitOfWork UnitOfWork;

    public AccountController(IUnitOfWork unitOfWork)
    {
        this.UnitOfWork = unitOfWork;
    }

你检查过这里吗?

绑定到属性总是返回 null

当您说“在每个页面上”时,您的意思是“在每个控制器上”?

如果是,我认为您可以创建一个 BaseController 类,并且所有控制器都应该从它继承。我正在使用这种方法。

于 2013-04-03T12:52:28.940 回答
0

您必须创建一个自定义控制器工厂才能让 Ninject 创建控制器。一旦你这样做,这将起作用。也可能已经对此进行了扩展

于 2013-04-03T12:42:05.513 回答