Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 在mvc中从另一个控制器调用控制器上的方法_Model View Controller_Castle Windsor - Fatal编程技术网

Model view controller 在mvc中从另一个控制器调用控制器上的方法

Model view controller 在mvc中从另一个控制器调用控制器上的方法,model-view-controller,castle-windsor,Model View Controller,Castle Windsor,我想在另一个控制器上调用一个方法。问题是,在我的项目中,所有控制器都是使用Windsor castle创建的,Windsor castle解决了依赖关系。这意味着我不能使用new实例化控制器,因为它需要依赖项。如何让MVC实例化一个控制器,然后对其调用一个方法(返回一个对象)?我将告诉您两件事:1)首先,我将向您展示如何最有可能实现您想要的,2)然后我将建议您以另一种方式实现您的目标:) 1:当使用自动连接时,从容器中获取内容的方法是通过将依赖项添加为构造函数参数来声明依赖项-例如(假设容器知道

我想在另一个控制器上调用一个方法。问题是,在我的项目中,所有控制器都是使用Windsor castle创建的,Windsor castle解决了依赖关系。这意味着我不能使用new实例化控制器,因为它需要依赖项。如何让MVC实例化一个控制器,然后对其调用一个方法(返回一个对象)?

我将告诉您两件事:1)首先,我将向您展示如何最有可能实现您想要的,2)然后我将建议您以另一种方式实现您的目标:)

1:当使用自动连接时,从容器中获取内容的方法是通过将依赖项添加为构造函数参数来声明依赖项-例如(假设容器知道如何根据控制器的具体类型解析控制器):

这很可能使您可以通过使用
HomeController
AccountController
执行所需操作。然而,这不是很漂亮


2:将一个控制器注入另一个控制器可能不是您(真正)想要的。我猜您确实希望将控制器动作方法中的任何逻辑移动到一个专用服务中,例如,
DoSomethingInteresting
,该服务碰巧实现了
IDoStuff
,然后让您的两个控制器都依赖于
IDoStuff
。这对您有意义吗?

您是否有一些代码可以发布,以便我们更好地了解您的方法?
public class HomeController
{
    readonly AccountController accountController;

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