我有我的一般绑定,其中之一是:
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。那么这是预期的行为以及使其使用覆盖类型的任何方法吗?