0

アップデート:

これは、MEF を使用して実行時にコントローラーとアクションを取得する mvc プラグイン プロジェクトです。http://www.fidelitydesign.net/?p=104

新しいプロジェクトを追加し、そのクラスに既に構成されているタイプのエクスポートを追加しました。

  [Export(typeof(IController)), ExportMetadata("Name", "Clocks")]
  public class ClocksController : Controller
  {

    public XmlActionResult Index()
    {
     var p = DeviceLogic.GetUnassigned;
    }
  [Import(typeof(DeviceLogic))]
  DeviceLogic DeviceLogic { get; set; }
  }

これは別のプロジェクトで構成されます。

  [Export]
  public class ImportControllerFactory : DefaultControllerFactory
  {
    [ImportMany]
    private IEnumerable<PartFactory<IController, IControllerMetadata>> ControllerFactories;
  }

申請開始

[ImportMany]
private IEnumerable<ImportControllerFactory> ControllerFactories;

実際にパーツを作成するまで、コントローラ ファクトリは null です

container.ComposeParts(this);

問題なく動作するので、これをエミュレートして、devicelogic が問題を抱えているプロジェクトに表示されるようにすることにしました。

テスト用に空のインターフェイス(IEmpty)を作成し、これを試しました:

  [Export(typeof(IEmpty))]
  public class RequestProcessor : IEmpty
  {

    [Import(typeof(DeviceLogic))]
    DeviceLogic DeviceLogic { get; set; }
  }

そして私のアプリケーションでは開始が追加されました

[ImportMany]
private IEnumerable<IEmpty> TestMef;

これは構成後の1つのインスタンスで満たされているため、これは機能しているようです。私の質問は、requestprocessor では devicelogic が null であるが clocksController では null ではない理由について何か提案がある人はいますか?

4

1 に答える 1