Nop源码分析三

Posted 青岛海诚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nop源码分析三相关的知识,希望对你有一定的参考价值。

程序的初始化工作和Ioc工作已经做完,nop默认引擎已经初始化。

下面在回到global文件的启动方法Application_Start()中,

1,继续分析下面的代码:

           var dependencyResolver = new NopDependencyResolver();
            DependencyResolver.SetResolver(dependencyResolver);

这两行代码的作用是:控制器激活的时候,我们用了自定义的NopDependencyResolver,该类有两个方法一个是GetService(Type serviceType),一个是GetServices(Type serviceType)。使用自定义的该类,主要是为了实现与IOC容器集成。

2,添加自定义模型绑定:   ModelBinders.Binders.Add(typeof(BaseNopModel), new NopModelBinder());

3,  ViewEngines.Engines.Add(new ThemeableRazorViewEngine()); 添加自定义视图引擎。

       ModelMetadataProviders.Current = new NopMetadataProvider();  自定义元数据提供者。

            AreaRegistration.RegisterAllAreas();    注册所有的areas
            RegisterGlobalFilters(GlobalFilters.Filters); 过滤器
            RegisterRoutes(RouteTable.Routes);  路由

       DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
            ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(new NopValidatorFactory()));  添加流验证。

4,      从程序集中把所有资源视图取出来,然后asp.net 编译系统中注册这些视图。

var embeddedViewResolver = EngineContext.Current.Resolve<IEmbeddedViewResolver>();
            var embeddedProvider = new EmbeddedViewVirtualPathProvider(embeddedViewResolver.GetEmbeddedViews());
            HostingEnvironment.RegisterVirtualPathProvider(embeddedProvider);

5,最后我们启动计划任务,代码如下:

                TaskManager.Instance.Initialize();
                TaskManager.Instance.Start();

    下面分析计划任务中都干了什么事。

以上是关于Nop源码分析三的主要内容,如果未能解决你的问题,请参考以下文章

Nop源码分析二

NopCommerce源码架构学习-二单例模式实现代码分析

Flutter Dio源码分析(四)--封装

Webpack-源码三,从源码分析如何写一个plugin

ABP源码分析三:ABP Module

传奇源码分析-客户端(游戏逻辑处理源分析三)