我有一般的绑定,其中一个就是:
Bind<IHasher>().To<SHA256Hasher>();
这很有效,因为有几个类使用这个版本。然而,有一个或两个控制器需要另一种类型的哈希来使用哈希与第三方,例如期望md5哈希的gravatar。那么我就是这样做的:
Bind<ISomeController>().To<SomeController>().Named("SomeController").WithConstructorArgument("emailHasher", new Md5Hasher());
然后我的控制器看起来像:
public class SomeController : Controller
{
private IHasher emailHasher;
public CampaignController(IHasher emailHasher)
{
this.emailHasher = emailHasher;
}
}
调试时我希望IHasher是Md5Hasher,但它是Sha256Hasher。那么这个预期的行为是什么方式使它使用被覆盖的类型?
答案 0 :(得分:1)
我想这是一个MVC控制器。 MVC框架将解析SomeController
而不是ISomeController
。因此,您的绑定不适用,但Ninject将使用隐式绑定SomeController
ToSelf
。
为SomeController
ToSelf
创建绑定。