如何在MVC和我的模型中使用相同的Ninject绑定

时间:2014-03-01 13:42:43

标签: asp.net-mvc model ninject ninject.web.mvc

我需要找到一种在我的类(模型)和我的MVC应用程序的控制器中使用Ninject的方法。

如何在双方使用相同的绑定?

现在我使用我生成的NinjectWebCommon.cs创建我的内核并初始化bootstrap:

    private static void RegisterServices(IKernel kernel)
    {
        System.Web.Mvc.DependencyResolver.SetResolver(
            new WebApplication1.Models.NinjectDependencyResolver(kernel)
            );

    } 

我的NinjectDependencyResolver看起来像是:

public class NinjectDependencyResolver : IDependencyResolver
{
    private IKernel k;

    public NinjectDependencyResolver(IKernel kp)
    {
        this.k= kp;
        AddBindings();
    }

    public object GetService(Type serviceType)
    {
        return k.Get(serviceType);
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        return k.GetAll(serviceType);
    }

    private void AddBindings()
    {
        k.Bind<ISerializer>().To<MySerializer>();
    }
}

MySerializer是我的序列化类。

对于我的控制器,这部分工作正常。

但是,假设我有以下型号:

public class MyButton
{

    ISerializer serializer;

    public MyButton(ISerializer weapon) 
    {
        serializer = weapon;
    }

    public string ToSString()
    {
        return serializer.serialize("my string - ");
    }
}

如何让Ninject也为我的模型工作?

谢谢!

1 个答案:

答案 0 :(得分:1)

您也可以注入模型并添加以下绑定

    private void AddBindings()
    {
        k.Bind<IMySerializer>().To<MySerializer>();
        k.Bind<IModel>().To<Model>();
    }

或者如果您没有注射模型,那么您可以执行类似此线程的操作

using ninject to inject dependency to The Model classes or non-controller classes