0

我有我的一般绑定,其中之一是:

Bind<IHasher>().To<SHA256Hasher>();

这很好用,因为有几个类使用这个哈希。但是,有一个或两个控制器需要另一种类型的散列器才能将散列与 3rd 方一起使用,例如需要 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。那么这是预期的行为以及使其使用覆盖类型的任何方法吗?

4

1 回答 1

1

我想这是一个 MVC 控制器。MVC 框架将解析一个SomeControllerISomeController. 因此您的绑定不适用,但 Ninject 将使用隐式绑定SomeController ToSelf

SomeController ToSelf而是创建一个绑定。

于 2013-08-05T12:56:38.090 回答