我需要找到一种在我的类(模型)和我的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也为我的模型工作?
谢谢!
答案 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