在简单的术语和/或高级伪代码中,DI容器如何工作以及如何使用?
在其核心,DI容器基于接口和具体类型之间的映射创建对象.
这将允许您从容器请求抽象类型:
IFoo f = container.Resolve<IFoo>();
这要求您先前配置容器从IFoo映射到实现IFoo的具体类(例如Foo).
这本身并不是特别令人印象深刻,但DI容器做得更多:
>他们使用自动布线,这意味着他们可以自动地弄清楚,如果IFoo将Foo和IBar映射到Bar,但Foo依赖于IBar,那么当您请求IFoo时,它将创建一个带有Bar的Foo实例.
他们管理组件的使用寿命.你们每次都想要一个新的Foo实例,但在其他情况下,你可能需要同样的实例.您甚至可能每次都想要新的Foo实例,但是注入的Bar应该保持不变.
一旦您开始尝试手动管理构图和生命周期,您应该开始欣赏DI容器提供的服务:)
许多DI容器可以做得比以上更多,但这些是核心服务.大多数集装箱提供configuring via either code or XML的选择.
关于容器的正确使用,Krzysztof Kozmic刚刚发布了a good overview.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。