MEF と MVC を使用してプラグ可能なアーキテクチャを構築しようとしています。モジュールのロードを担当するMVCアプリケーションがあります(他のmvcプロジェクト)。アイデアは、モジュールをコピーしていくつかのフォルダーに貼り付けることであり、モジュールがポップアップするはずです。
とにかく、エクスポートされた (MEF エクスポートに関して) API コントローラーをモジュール アセンブリから取得したかったのです。
[Export("TestModuleApi", typeof(IHttpController))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class TestModuleApiController : ApiController
{
[HttpGet]
public object Get()
{
return "HomeApi";
}
}
どうすればそれを達成できるかについて、多くの情報を見つけることができませんでした。
ただし、 のカスタム実装を使用して「通常の」mvc コントローラーを取得することができましたIControllerFactory
。このCreateController
メソッドでは、 のエクスポートされたオブジェクトから要求されたコントローラーを取得しますCompositionContainer
。しかし、は( )ではなく、オブジェクトIControllerFactory
のみを提供しています。IController
IHttpController
ApiController
カスタムを実装しようとしましたIHttpControllerActivator
が成功しませんでした。モジュールから URL をブラウズしようとすると (のように)、404 が返され、カスタム アクティベーターのメソッドapi\TestModuleApi\Get
にさえアクセスできません。Create
どんな助けでも大歓迎です。