asp.net-mvc – Ninject.MVC3,Nuget,WebActivator哦我的
|
我想设置Ninject做一个简单的测试,以及演示使用Nuget的易于安装.我想解决一个示例服务. public interface ITestService
{
string GetMessage();
}
public class TestService : ITestService
{
public string GetMessage() { return "hello world"; }
}
我运行NuGet安装包NinjectMVC3 ….它很好地将NinjectMVC3.cs下载到我的App_Start文件夹,用一些WebActivator属性装饰,以使其全部加载. 接下来我在NinjectMVC3.RegisterServices方法中添加我的绑定: private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ITestService>().To<TestServiceOne>();
}
现在我想’使用’Ninjet来解决我的ITestService. public ActionResult Index()
{
//[Ninject,give me the service I need]
ITestService service = ???
ViewBag.Message = service.GetMessage();
return View();
}
还有另一部分设置Ninject? 我需要解决我的ITestService的代码是什么 感谢帮助 ** * * * * * * * * * * *更新:* * * * * * * * * * * * * * * * ** 感谢您对“控制器构造函数”注入的响应. private ITestService _service;
public HomeController(ITestService service)
{
_service = service
}
public ActionResult Index()
{
ViewBag.Message = _service.GetMessage();
return View();
}
现在什么是理想的解决方案,当我需要直接获取内核. var kernel = ... // Go grab the kernel from ????? (thanks Judah). ITestService service = kernel.Get<ITestService>(); 我可以看到NinjectMVC3类创建了内核,但并没有持有或公开一个引用,也没有找到一个明显的类/方法来获取内核. 我假设你是一个Ninject的方式来得到它,但不确定. ** * * * * * * * * * * *(最终)更新:* * * * * * * * * * * * * * * * ** 再次感谢您的回答和意见…. 更正:NinjectMVC3类创建内核,并且保留对作为其内核的“Bootstrapper”的引用. 所以我在App_Start / NinjectMVC3类中添加了一个’resolve’方法. public static class NinjectMVC3 /// created by the NinjectMVC3 NuGet Packagae
{
// add method to provide a global resolver.
public static T Resolve<T>()
{
return bootstrapper.Kernel.Get<T>();
}
}
解决方法将ITestService作为构造函数参数添加到控制器中:private ITestService service;
public MyController(ITestService service)
{
this.service = service;
}
public ActionResult Index()
{
ViewBag.Message = this.service.GetMessage();
return View();
}
Ninject将自动将ITestService注入您的控制器.然后在Index方法中使用服务字段. 或者,如果你不希望Ninject注入到你的控制器构造函数中,你可以保持你创建的内核,然后在你的Index方法里面调用kernel.Get< ITestService>()来获取一个实例: public ActionResult Index()
{
var kernel = ... // Go grab the kernel we created back in app startup.
ITestService service = kernel.Get<ITestService>();
ViewBag.Message = service.GetMessage();
return View();
}
看看Ninject dependency inject for controllers in MVC3. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在ASP.NET MVC 4和jquery中使用web api下载文件
- 存储过程 – 经典ASP – ADO执行存储过程传入参数
- asp.net-mvc – 如何在共享托管环境中实现ASP.Net MVC网站的
- asp.net-mvc – 测试控制器使用User.Identity.Name的操作
- asp.net-mvc – 数据模型需要两个属性之一
- 获取Uploadify以使用asp.net-mvc
- asp.net-mvc-4 – 当模型中存在一对多关系时,MVC“创建视图
- asp.net-mvc – 带vNext的MVC 6:我们还需要Global.asax吗?
- asp.net – 如何在gridview中将navigateurl添加到超链接
- asp.net-web-api – Web API中的OData POST的媒体资源支持
- 404的ASP.NET自定义错误页面为http状态返回302
- asp.net – 401向web api发送ajax请求时未经授权
- asp.net-mvc – 用于ASP.NET MVC的Spark T4模板
- ASP.NET TextBox LostFocus事件
- asp.net-mvc – HttpContext中需要什么来允许For
- asp.net-mvc – Kendo UI Grid一次只扩展一行
- asp.net – 我可以重新发布或携带POST数据(如果是
- asp.net – 如何在单独的dll项目中配置WCF
- asp.net – MVC3 Razor – 到期页面
- asp.net-mvc – 每个请求DbContext发生随机错误
