2012-02-16 30 views
0

別のコントローラのメソッドを呼び出したい。問題は私のプロジェクトでは、すべてのコントローラーがWindsor castleを使用して作成され、Windsor castleが依存関係を解決することです。これは、コントローラをインスタンス化することができないことを意味します。 MVCにコントローラをインスタンス化し、その上でメソッドを呼び出して(オブジェクトを返す)どうすればよいですか?mvcの別のコントローラからコントローラのメソッドを呼び出す

+0

私たちがあなたのアプローチをよりよく理解できるように、投稿できるコードがありますか? –

答えて

0

私はあなたに2つのことを教えてあげます:1)まず、あなたが望むことを達成する可能性が最も高い方法を示します。2)その後、あなたの目標を達成する別の方法:)

1:自動配線を使用する場合、コンテナからのものを取得する方法は、それをコンストラクタ引数として追加することによって依存関係を宣言することです(コンテナと仮定すると、その具体的な種類によってコントローラを解決する方法を知っている):

public class HomeController 
{ 
    readonly AccountController accountController; 

    public HomeController(AccountController accountController) 
    { 
     this.accountController = accountController; 
    } 
} 

これが最も可能性が高いあなたがHomeControllerをwithingからAccountControllerであなたがやりたいことができます。しかし、これはそれほど美しくはありません。

2:コントローラを別のコントローラに注入するのは、おそらくあなたが望むものではありません。コントローラーのアクションメソッドで使用しているロジックを専用サービスに移行したいと思っています。 DoSomethingInterestingが発生し、IDoStuffが発生し、両方のコントローラがIDoStuffに依存するようになります。これはあなたに理にかなっていますか?

関連する問題