私はいくつかのDIフレームワークがこれをサポートしていることを知っています(例えばNinject)、具体的にはAutofacで可能かどうかを知りたいと思います。オートファックで自動バインドを実行できますか?
私は、具体的なクラスのAutofacコンテナを要求し、適切なコンストラクタの依存関係をすべて注入したインスタンスを取得したいと思っています。具体的なクラスを登録することなく。私は明示的にバインドすることはありません場合、私はこれがあるのviewmodels有用であろうときの良い例builder.Register<MyClass>();
と呼ばれていたかのように、すなわち、その後、は自動的に、それ自体に具象クラスをバインド。 MVVMでは、ViewのみがViewModelに依存し、緩いタイピングではViewが単体テストしないようなレイヤーになっています。したがって、テストのためにViewModelをモックする必要はありません。したがって、各ViewModelのインタフェースを持つ理由はありません。したがって、この場合、「このクラスに解決するためにこのインタフェースを登録する」という通常のDIパターンは、不要な複雑さです。 builder.Register<MyClass>();
のような明示的な自己バインディングも、具体的なクラスと同じように扱うときには不要なステップのように感じます。
私はAutofacドキュメントのreflection-based registration exampleを知っていますが、これは私の好みではありません。私は、すべての可能なクラスを事前に登録することの複雑さ(および遅さ)を望んでいません。フレームワークが必要なときに必要なものを私に与えることを望みます。コンベンションのコンベンション、そしてそのすべて。
「ああ、これは具体的なタイプですが、誰もまだ登録していないので、デフォルト設定で登録されたように動作します」と言うように、Autofacを設定する方法はありますか?
Sweet - 私が探していたものとまったく同じように聞こえる。ありがとう! –