私はコードを直接探しているわけではありませんが、私の問題を最もよく解決する方法についていくつかのアイデアを探しています。
私が取り組んでいるこのasp.net mvcアプリケーションがあります。それは「高度にモジュール化」されるべきであり、多くの部品は異なるプロジェクト間で再利用されなければなりません。
現在のアプローチでは、Managed Extensibility Framework を使用して実行時にアセンブリをインポートしています。これらは通常、作業に必要なすべてのもので構成されています。モデル、ビュー、コントローラー。ルートとナビゲーション/メインメニューボタンは、インポート時に登録されます。これは今のところ機能します。たとえば、「ニュース コラム」アセンブリを他のプロジェクトに単純にコピーし、MEF を含めると、「魔法のように」新しいプロジェクトが /News/List でアクセス可能なニュース機能を提供します。
ただし、問題は、ほとんどの場合、アセンブリ内で提供される既定のビューが適合する一方で、インポートされたコントローラーを別のビューで表示して、他のフィールドをカスタム レイアウトで表示したい場合があることです。私の現在のアプローチは、モジュール内のアクション メソッドを仮想化することです。別のプロジェクトでカスタム ビューを使用してリストをレンダリングする必要がある場合は、リスト メソッドをオーバーライドし、基本メソッドを呼び出して ViewData を埋めてから、必要なビューを呼び出すだけです。しかし、これはどういうわけか汚れているように感じます。誰かがより良い解決策を知っていれば、本当に感謝しています。
私が直面しているもう 1 つの問題は、インポートしたモデルを別のテーブルで動作させたいということです。ターゲット テーブルが ClassMap 内で定義されている Fluent NHibernate を使用します - Table("News")。マッピングは次のようにインポートされます。
foreach(Assembly assembly in assemblies)
configuration.Mappings(m => m.FluentMappings.AddFromAssembly(assembly));
インポートされたマッピングのテーブルを変更する方法がわかりませんでしたが、簡単な方法があると思いますか?
少なくともこれを読んでくれてありがとう:)