c# - ASP.NET MVC3 手工编码 IoC

标签 c# asp.net-mvc-3 dependency-injection inversion-of-control

Ninject、Sprint.NET、Unity、Autofac、CaSTLe.Windsor 都是可用的 IoC 框架的例子。但是,我喜欢自己编写的学习曲线和控制。不“重新发明轮子”而只使用现有结构绝对是常见的做法。如果您的评论符合这些原则,请保持温和。

不使用 XML 可以实现 IoC 吗?在我看来,上述框架中的大部分(如果不是全部的话)都使用 XML,但我宁愿只用 C# 编写我的框架,而不是使用 XML 来加载 .dll。反正C#最终都转成了一个.dll。

根据我的理解,如果有误请更正,IoC 可以与 DI 一起使用,使类的功能基于它们的定义和实现,同时允许关注点分离。

这是在 C# 中使用 Microsoft 的库 System.ComponentModel.IContainer 通过继承它的类来完成的。一个类,例如 Product,将有一个接口(interface) IProduct。然后,通用构造函数将从 IContainer 继承,并在构造函数中允许传入存储库、传入实例化对象和传入函数。这将允许 Controller 操作随后实例化接口(interface)(IProduct ), 用当前存储库实例实例化通用构造函数,然后将接口(interface)和函数传递给它。

这个设置准确吗?

我仍在尝试了解有关此主题的更多信息,并阅读了有关 IoC、DI 的维基文章,阅读了有关 CaSTLe.Windsor、ninject、Unity 的文章,并查看了 MSDN 中有关使用的 C# 库的多个定义.非常感谢任何帮助、更正或建议。谢谢

最佳答案

Can IoC be implemented without the use of XML?

是的,可以在不使用任何 XML 的情况下配置 Ninject、Unity、CaSTLe Windsor 和 Autofac。 (对Spring.NET不太了解,上次用是不可能的,1.3版本)

From my understanding, if wrong please correct, IoC can be used with DI to make the functionality of classes be based off of their definition and implementation while allowing for a separation of concerns.

如果在“IoC”下你指的是“IoC 容器”那么是的,它可以与 DI 一起使用,但由于 DI 是控制反转的一个特例,你的 IoC 容器将只是你依赖项的容器。通过仅仅拥有它,您不会神奇地获得任何 DI 友好类型。它只是对管理您的反向 依赖项的支持。

编辑

正如 Mystere Man 在他的回答中指出的那样,您需要提高对 IoC 容器的理解。所以我建议阅读此 wonderful book (来自 Mark Seeman)关于所有这些东西。

关于c# - ASP.NET MVC3 手工编码 IoC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9040510/

相关文章:

javascript - 我如何更新我的 MVC 3 站点中的图像?

asp.net-mvc-3 - MVC3 web.config 是否允许对单个 Controller 进行身份验证?

c# - 在 Controller 的 MVC **外部**中模拟 HttpContext

javascript - 这个工厂依赖问题有什么问题?

angular - Reflective Injector 和 Injector in Angular 的区别

c# - 在库中解析期间引发错误/警告的模式

c# - 从 table 上给一棵树浇水

c# - 如何使用 EWS 托管 API 在 Exchange 2007 中获取项目 Web 客户端 ID

grails - 在 Grails 中注入(inject)不同的服务

c# - c#查询结果中记录计数