0

私のビューは、作成した基本ビュー クラスを拡張します。

public class BaseView : ViewPage

現時点では、このクラスのコンストラクター内で ObjectFactory.GetInstance を呼び出して、いくつかのインターフェイスの実装を取得していますが、構造マップを使用してそれらをコンストラクターの引数として挿入したいと考えています。

コントローラーを作成するために structuremapcontrollerfactory を使用していますが、ビューに対して同じことを行うにはどうすればよいですか?

カスタムViewEngineを実装できることはわかっていますが、リフレクターを使用してmvcのデフォルトのviewengineとその依存関係を確認すると、それは延々と続いているようで、すでにあるものを再実装する必要はありません。これを解決する狡猾なアイデアを持っている人はいますか?

コンストラクター注入の代わりにセッターを使用して物事を簡単にできることはわかっていますが、可能であればそれを避けてください。

4

1 に答える 1

1

はい、WebForms ViewEngine について話しているのであれば、コントロールの反転を念頭に置いて設計されていないという評価は正しいです。Microsoft に働きかけて変更するか、setter インジェクションを使用することができます。FubuMVC では、StructureMap の BuildUp メソッドと共にセッター インジェクションを使用します。

  • WebFormsControlBuilderはビューのインスタンスを作成します
  • StructureMapWebFormsControlBuilder は WebFormsControlBuilder から派生します。ベースを呼び出してインスタンスを作成し、次に BuildUp を呼び出して、適用可能なすべてのプロパティに対してセッター インジェクションを実行します。
于 2010-01-30T14:56:42.477 に答える