2

現在、サービス層とデータ アクセス層に分割されているアプリケーションがあります (MVC 層が進行中です)。クラスで必要なボイラープレート Ninject コードの量を減らそうとしています。

私の最初のアイデアは、UserService と UserDAO によって拡張される各ビジネス オブジェクト タイプ (つまり、UserBase) の基本クラスでした。残念ながら、それでは他のクラス (つまり、すべての Service 実装によって拡張される AbstractService クラス、AbstractDAO クラスなど) を拡張できなくなります。

私の 2 番目のアイデアは、渡されたさまざまな IModule 実装の IKernel を返す単純なファクトリでした。残念ながら、各クラスには IKernel メンバー変数が必要でしたが、これで問題が解決し、AbstractService と AbstractDAO を作成できるようになりました。

    class NinjectKernelFactory
    {
        private NinjectKernelFactory()
        {
        }

        public static IKernel getKernel(params IModule[] modules)
        {
            IKernel kernel = new StandardKernel(modules);
            return kernel;
        }
    }

Ninject の使用を最適化するための他のアイデアはありますか?

4

1 に答える 1

1

はい、プロパティインジェクションを使用することはここに行く良い方法です。さらに優れたデザインを取得したい場合は、カスタムControllerFactoryを作成し、カーネルを使用してインスタンスコントローラーを取得することにより、ninject自体を使用してコントローラーを作成することもできます。そうすれば、コントローラーはすでにIKernelプロパティで初期化されています。

http://nayyeri.net/custom-controller-factory-in-asp-net-mvc

于 2009-12-23T20:17:07.277 に答える