使用 StructureMap 进行依赖注入...我做错了什么?

发布于 2024-12-11 23:33:17 字数 774 浏览 0 评论 0原文

我有一个简单的 MVC3 Web 应用程序。我使用 StructureMap 作为依赖注入。

它与我的 HomeController 配合得很好,但是当我转到第二个控制器时,我遇到了这个错误: MissingMethodException:没有零参数构造函数。

我遵循了教程中找到的每一个步骤......

谢谢。

这是代码:

public class HomeController : AuthorizedController
{
    IRepository<User> _repository;

    public HomeController(IRepository<User> repository)
    {
        _repository = repository;
    }
}


public class AccountController : AuthorizedController
{
    private readonly IRepository<User> _repository;

    public AccountController(IRepository<User> repository)
    {
        _repository = repository;
    }
}

我使用这个简单的注入:

For<IRepository<User>>().Use<UserRepository>();

I have a simple MVC3 Web application. I use structureMap as a dependency Injection.

It works fine with my HomeController, but when I go to a second Controller I have thi error:
MissingMethodException : No zero parameters constructor.

I followed every step I found in tutorials...

Thx.

Here's the code :

public class HomeController : AuthorizedController
{
    IRepository<User> _repository;

    public HomeController(IRepository<User> repository)
    {
        _repository = repository;
    }
}


public class AccountController : AuthorizedController
{
    private readonly IRepository<User> _repository;

    public AccountController(IRepository<User> repository)
    {
        _repository = repository;
    }
}

And I use this simple injection:

For<IRepository<User>>().Use<UserRepository>();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幸福丶如此 2024-12-18 23:33:17

你确定它可以与 HomeController 一起使用吗?如果第二个控制器有错误,那么 HomeController 应该出现错误吗?

确保您的基本控制器 AuthorizedController 具有无参数公共构造函数

如果您没有为类定义构造函数,则会创建无参数构造函数。但是,如果定义带参数的构造函数,则不会创建无参数构造函数。

ASP.net MVC 控制器工厂 -
System.Web.Mvc.DefaultControllerFactory.CreateController 需要一个无参数构造函数

Are u sure it is working with HomeController? if you have error for second controllor then error should be present for HomeController?

Make sure that your base controller AuthorizedController has a parameterless public constructor

If you do not define a constructor for a class, a parameterless constructor will be created. However, if you define a constructor with parameters, no parameterless constructor will be created.

ASP.net MVC Controllor Factory -
System.Web.Mvc.DefaultControllerFactory.CreateController needs a parameterless constructor

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文