asp.net-mvc – 将存储库注入ASP.NET控制器的最佳方法是什么
我们有一个用ASP.NET MVC编写的项目,我们使用NInject将存储库注入控制器.目前我们正在使用属性和Inject-attribute来注入存储库,这很好用:
[Inject] public IMyRepository MyRepos {get;set;} 另一种注入方法是使用NInjectServiceLocator“手动”执行: var myRepos = NInjectServiceLocatorInstance.Resolve<IMyRepository>(); 现在我想知道以下内容:第一种方法要求所有存储库都列在控制器的顶部(当然不一定在顶部,但它是最合理的位置).每当发出请求时,NInject都会实例化每个存储库.无论是否在特定Action内实际需要所有存储库,都会发生这种情况. 使用第二种方法,您可以更精确地控制实际需要哪些存储库,因此在创建控制器时可能会节省一些开销.但是您可能还必须包含代码以在多个位置检索相同的存储库. 那么哪一个会更好?是否拥有一堆存储库属性更好还是更好地解决在您需要的时间和地点实际需要特定操作的存储库?注入“无用”存储库是否会导致性能下降?那里有(甚至;-)更好的解决方案吗? 解决方法
使用DI时,构造函数注入应该是您的默认选择.
你应该问问自己,控制器是否真的依赖于那个特定的类来工作. 如果只有特定的方法需要依赖,那么方法注入也可以是特定场景的解决方案. 我从未使用过Property Injection,但Mark Seeman在他的书(Dependency Injection in .NET)中描述了它:
本地默认值描述为:
除非您正在构建API,否则我建议不要使用Property Injection
在使用构造函数注入时,我认为您不应该担心性能 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 将所有js文件捆绑在一个捆绑包中,与css文件
- asp.net-mvc-3 – 在razor语句之间输出文字HTML会导致编译错
- 带有MS Chart的ASP.NET禁用垂直线
- asp.net – 禁用javascript中的复选框,并在服务器端将其识别
- asp.net – @ Html.EditorForModel()下拉列表
- asp.net-mvc – 如何拦截所有的ASP.NET WebApi控制器操作方
- asp.net – DirectoryServicesCOMException 80072020来自II
- asp.net-mvc-3 – ASP.NET MVC视图模型不绑定在HTTP Post与
- ASP.net Gridview突出显示多列中的最大值
- 如何从asp.net中的javascript调用codebehind函数?
- 获取Asp.net/iis设置Cache-control:静态文件的m
- asp.net-mvc – ASP.Net MVC 2.0 Html.HiddenFor
- asp.net-mvc – 我可以在MVC 3中有/多个_Layout页
- asp.net – 兼容模式下的IE9无法正确显示CSS样式
- ASP.NET Razor查看Html.TextBox大小/宽度
- ASP.NET MVC 4自定义HTML Helpers文件夹位置
- asp.net-mvc – 启用SSL时,IIS默认为HTTPS的端口
- 为ASP.NET MVC创建一个基于Unity的ControllerFac
- asp.net-mvc – 从DataAnnotations MVC 3向字段添
- asp.net-mvc – 从MVC 3升级到4后,Razor帮助器方