5

Ninject 是否有统一的注册实例的等效方法。

我想创建一个模拟对象并注册它。

谢谢

4

2 回答 2

13

这是简单的答案

Bind<IMyType>().ToConstant<MyType>(new MyType());

下面是一个使用 Moq 的示例:

var mock = new Mock<IMyType>();
//Setup your mock expectations / etc here.
//...
Bind<IMyType>().ToConstant(mock.Object);

奖励答案:

我发现有些人实际上只是想创建一个特定类的单例实例,而不是自己实际创建它(这允许在有东西请求时创建对象,而不是在构建容器时创建对象)。这样做是这样的:

Bind<IMyType>.To<MyType>().Using<SingletonBehavior>();

在您的情况下,由于您说了“模拟”一词,我假设您想要第一个而不是第二个答案,但知道这是一件好事。

于 2009-08-11T05:31:04.477 回答
2

不确定您使用的是哪种模拟工具(如果有)或 Ninject 版本;然而,值得一提的是,Ninject 2 有一个扩展,它提供与 Moq 的集成 - http://github.com/enkari/ninject.moq

我意识到这并不能直接回答你的问题,安德森做得很好,但认为它可能还是相关的。

于 2009-08-11T11:53:07.273 回答