私は仕事中の大きなプロジェクトの設計思想を持っていますが、わかったと思いますが、a)一般的なアイデアとb)私の提案実装。ASP MVCにコントローラファクトリを追加する
基本的なアイデアは簡単です:コードを再コンパイルせずに、コントローラとビューを追加して将来拡張できるASP MVCアプリケーションを作成したいと思います。 1つのMVCアプリケーションに非常に基本的なフィーチャセットを持たせ、そのアプリケーション固有のコントローラ、データ、ビジネスロジックを含む別の 'Application.dll'を追加することで機能を拡張するというアイデアがあります。
問題は、MVCが同じアセンブリ内の型に対してルーティングを実行するため、ルーティング定義をデータベースに移動しても、MvcHttpHandlerがルーティングできないということですMVCコードを見ると、現在のアセンブリでのみ見えるActivator.CreateInstanceを呼び出すコントローラがロードされていることがわかりました。
私の解決策シンプルですが、おそらく私は何かが欠けている可能性があります:私は、ControllerFactoryを直接(それを行う方法がわからない)置き換えるか、派生クラスでその機能を複製することによって、MvcHttpHandlerをオーバーライドします。新しいコードは要求を読み込み、最初に現在のアセンブリからコントローラをロードし、次に拡張されたコントローラからコントローラをロードしようとします。適切なアセンブリが見つかると、CreateInstanceを使用してそのアセンブリを渡して、必要なコントローラを取得します。
ありがとう、ベン。それが私が探していたものです。 – Gil