nopCommerce开发者指南(四):控制反转和依赖注入

原文链接:http://docs.nopcommerce.com/display/nc/Inversion+of+Control+and+Dependency+Injection

翻译 by:yersans,如有不妥,敬请指正,博主邮箱:zhanglei0591@qq.com。转载请注明出处。

 

控制反转和依赖注入是在程序中分离依赖的两种相关的方式。控制反转( 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 会对依赖类进行排序,然后按照降序的顺序运行它们。序号越高的对象越晚被注册。

posted on 2015-04-02 12:07  用语言表达世界  阅读(302)  评论(0编辑  收藏  举报