0

私は一般的なバインディングを持っていますが、そのうちの 1 つがこれです。

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

このハッシャーを使用するクラスがいくつかあるため、これはうまく機能します。ただし、md5 ハッシュを期待する gravatar など、サードパーティでハッシュを使用するために別のタイプのハッシャーを必要とする 1 つまたは 2 つのコントローラーがあります。だから私は以下を行います:

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 フレームワークは、SomeControllerではなくを解決しISomeControllerます。したがって、バインディングは適用されませんが、Ninject はSomeController ToSelf代わりに暗黙のバインディングを使用します。

代わりにバインディングを作成しますSomeController ToSelf

于 2013-08-05T12:56:38.090 に答える