- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想设置 Ninject 来进行简单的测试,并演示使用 Nuget 设置的简易性。我想解决一个示例服务。
public interface ITestService
{
string GetMessage();
}
public class TestService : ITestService
{
public string GetMessage() { return "hello world"; }
}
我运行 NuGet Install-Package NinjectMVC3 ....它很好地将 NinjectMVC3.cs 放入我的 App_Start 文件夹中,并用一些 WebActivator 属性装饰以使其全部加载。
接下来,我在 NinjectMVC3.RegisterServices 方法中添加绑定(bind):
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 所需的代码是什么。
感谢帮助»
** * * * * * * * * * * * * 更新: * * * * * * * * * * * * * * * * * **
感谢您对“ Controller 构造函数”注入(inject)的精彩回应。只需添加一个以 ITestServcice 作为参数的构造函数....BAMM !!!
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”的引用,它作为其上的 IKernel。
所以我向 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>();
}
}
最佳答案
步骤:
Install-Package Ninject.MVC3
在 HomeController 中:
public class HomeController : Controller
{
private readonly ITestService _service;
public HomeController(ITestService service)
{
_service = service;
}
public ActionResult Index()
{
ViewBag.Message = _service.GetMessage();
return View();
}
}
在App_Start/NinjectMVC3.cs
中:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ITestService>().To<TestService>();
}
关于asp.net-mvc - Ninject.MVC3、Nuget、WebActivator 天哪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5315028/
到目前为止,我尝试的任何方法都未能让 Firefox 在某些文本下划线。 根据 Google 结果,这个问题已为人所知并已记录了五年多......这不可能是真的......到底发生了什么? 有人知道任
考虑一个示例,其中方法是纯虚拟的,采用模板化类型的参数(从外部类型注入(inject)),并且该模板化类型是本地类型(在函数体中定义)。这种情况会导致 g++ 下的编译时错误。不可否认,这是一个极端案
更新“Web 应用程序”(从开发服务器“重新发布”到实时服务器)同时保留用户数据(例如存储在文件系统中的图像、视频和音频)的最佳方法是什么) 在 VS 2010 构建/发布设置中? 此外,在这些更新期
本人第一次发帖,如有错误请多多包涵。另外,这是我第一次广泛使用 jquery,所以再一次...不要打败我。 好吧,情况如下... 我有一个 WP 模板,它的 jquery 相当多(不是我的),我不想尝
我试图用鼠标在 Canvas 上画一个圆圈,但我的数学是错误的,我不知道如何修复它。我希望当您单击并拖动以形成圆圈时,圆圈的顶部(或底部)和圆圈的侧面与光标的十字准线对齐。 我有一个 fiddle s
大家好, 我确信我陷入了回调噩梦,试图从传递 {query} 的 Mongoos.count 获取简单值。我可以在回调中获取该值并在控制台中看到它正常,但是尝试将其从异步回调设置中取出来却让我感到困惑
box model应该很简单,但我就是不明白。 这是一个无意义的表格 Box model test Box 1 Box 2 及其 CSS body
背景:我正在研究 framework它基于现有的 Java 类模型生成 C++ 代码。因此,我无法更改下面提到的循环依赖。 给定: 父子类关系 父级包含子级列表 用户必须能够在运行时查找列表元素类型
F#一出来,我就要在异步/并行编程领域发财了。一个 answer to this question在描述 Tasks、Parallel LINQ 和 Reactive Framework 之间的差异方
我正在尝试了解 iPhone 操作系统上的 OpenGL 对象模型。我当前正在屏幕上渲染到几个不同的 UIView(基于 CAEAGLayer 构建)。我目前将其中每一个都使用单独的 EAGLCont
关于 Google map 、AJAX 和一些后端数据的快速问题。 我将如何创建使用我存储在数据库中的信息“实时”更新的谷歌地图? 我认为它在我脑海中运作的方式是。 数据库从用户那里收集带有地理标记的
简单地说,我正在尝试制作一款全屏游戏。 我尝试使用以下代码: GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironm
好的.....我已经完成了所有相关问题的阅读和一些 MSDN 文章,以及大约一天的谷歌搜索。 这个问题的当前“最先进”答案是什么: 我正在使用 VS 2008,C++ 非托管代码。我有一个包含很多 D
在开发内容管理系统时,我遇到了一些困难。回到我的数据模型,我注意到一些问题可能会随着时间的推移变得更加普遍。 即,我想维护用户记录修改的审计跟踪(更改日志)(甚至会记录用户记录修改)。由于包含任意数量
假设我有一个很大的对象列表(数千或数万),每个对象都带有一些标签。有数十或数百个可能的标签,它们的使用遵循典型的幂律:有些标签使用得非常频繁,但大多数很少见。事实上,除了最常见的几十个标签之外,所有标
和我一起回到三年前吧。我记得构建的 Web 控件通过 AJAX 动态插入到页面的 HTML 中,然后就地呈现。我们使用了 Prototype JavaScript 库和 XMLHTTP Request
这里很沮丧。我不是数据库管理员,但可以绕过。我正在针对 Progress OpenEdge 数据库编写一些 ODBC 查询,我们只能查看该数据库。很长一段时间以来都没有出现任何问题,直到最近他们更改了
我认为我面临着一种独特的情况,主要是因为我找不到任何可以帮助我解决这个问题的方法。我正在尝试在蒙版元素内添加视差效果。在元素可以......“视差?”之前......它必须滑入视野,在蒙面容器内。 在
您在 Rails 应用程序的 Selenium 测试中使用哪些数据?您是否从固定装置加载?使用现有的开发数据库?使用单独的(非 fixture )数据库? 我正在考虑我的选择。我有一个带有大型 Sel
我有一个 Ruby on Rails 项目(使用 git 进行版本控制),其中包含许多存在于各种公共(public) GitHub 存储库中的外部 JavaScript 依赖项。将这些依赖项包含在我的
我是一名优秀的程序员,十分优秀!