加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 首先通过NuGet尝试StructureMap和MVC3

发布时间:2020-12-15 19:48:20 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试如何为ASP.NET MVC3配置StructureMap我已经使用NuGet,我注意到它创建了一个名为StructuremapMVC的cs文件的App_Start文件夹,所以我检查它并注意到它是相同的代码但是简化了将在Global.asax上的App_Start部分手动编写… 这是我在IoC Class中的代码 p
我正在尝试如何为ASP.NET MVC3配置StructureMap我已经使用NuGet,我注意到它创建了一个名为StructuremapMVC的cs文件的App_Start文件夹,所以我检查它并注意到它是相同的代码但是简化了将在Global.asax上的App_Start部分手动编写…

这是我在IoC Class中的代码

public static class IoC
    {
        public static IContainer Initialize()
        {
            ObjectFactory.Initialize(x =>
                        {
                            x.Scan(scan =>
                                    {
                                        scan.TheCallingAssembly();
                                        scan.WithDefaultConventions();
                                        scan.AddAllTypesOf<IController>();
                                    });
                            x.For<OpcionDB>().Use(() => new DatabaseFactory().Get());
                        });
            return ObjectFactory.Container;
        }
    }

我的问题是为什么当我在控制器上注入一些IoC时会出现异常(我使用这种模式:Entity Framework 4 CTP 4 / CTP 5 Generic Repository Pattern and Unit Testable):

private readonly IAsambleaRepository _aRep;
        private readonly IUnitOfWork _uOw;

        public AsambleaController(IAsambleaRepository aRep,IUnitOfWork uOw)
        {
            _aRep = aRep;
            this._uOw = uOw;
        }

        public ActionResult List(string period)
        {
            var rs = _aRep.ByPeriodo(period).ToList<Asamblea>();

            return View();
        }

例外显示:

Exception Details: System.MissingMethodException: No parameterless constructor defined for this object.

解决方法

您收到该错误是因为您没有设置StructureMap来解析构造AsambleaController所需的依赖关系,所以它试图找到一个没有参数的构造函数.

所以你需要做的是为IAsambleaRepository和IUnitOfWork设置StructureMap.

在旁注中,我会说IUnitOfWork应该依赖于您的存储库而不是您的控制器……您的控制器不应该知道工作单元.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读