原文链接:http://docs.nopcommerce.com/display/nc/Inversion+of+Control+and+Dependency+Injection
翻译 by:yersans,如有不妥,敬请指正,博主邮箱:[email protected]。转载请注明出处。
控制反转和依赖注入是在程序中分离依赖的两种相关的方式。控制反转( Inversion of Control (IoC) )表示,一个对象不创建它所需依赖的其他对象。取而代之的是,它们通过外部源码获取所需对象。依赖注入( Dependency Injection (DI) )表示,它不需要对象干预,通常是通过一个框架组件以传入构造参数和设置属性的方式来实现。Martin Fowler 对依赖注入或控制反转有非常好的阐释,在这里我不想重复他的工作,你可以点击这里查看他的文章。nopCommerce 使用Autofac库作为IoC 容器。一个service类对应并实现一个相应的接口,同时你需要在所有实现了IDependencyRegistrar接口的类中注册它们。
public class DependencyRegistrar : IDependencyRegistrar { public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder) { builder.Register(c => c.Resolve<HttpContextBase>().Request) .As<HttpRequestBase>() .InstancePerLifetimeScope(); ... } } 你可以根据需要创建任意多个注册类。每个实现了IDependencyRegistrar 接口的类都有一个Order 属性。它允许你替换已有的依赖。如果你要重写nopCommerce 依赖,只需吧它的Order属性设为大于0的数即可。因为nopCommerce 会对依赖类进行排序,然后按照降序的顺序运行它们。序号越高的对象越晚被注册。
时间: 2024-11-05 22:47:08