Nop-通过IStartupTask实现代码执行<六>
来源:互联网 发布:nba2k16罗伊捏脸数据 编辑:程序博客网 时间:2024/05/17 20:14
Nop-通过IStartupTask实现代码执行<六>
分类: Nop Commerce2012-02-23 15:38 12人阅读 评论(0) 收藏 举报
通过IStartupTask实现初始化任务
来自norp.Core的接口IStartupTask
public interface IStartupTask { void Execute(); int Order { get; } }
public int Order //通过Order来对同一Interface的implementation的Class初始化排序。 { get { return 0; } }
在每个项目中,有些类,例如Nop.Web下的AutoMapperStartUPtask/AdminStartupTask.总之名称看起来是*StartupTask.cs,以Nop.Data的EfstartUpTask为例:
namespace Nop.Data { public class EfStartUpTask : IStartupTask { public void Execute() { if (!DataSettingsHelper.DatabaseIsInstalled()) return; var settings = EngineContext.Current.Resolve<DataSettings>(); if (settings != null && settings.IsValid()) { var provider = EngineContext.Current.Resolve<IEfDataProvider>(); if (provider == null) throw new NopException("No EfDataProvider found"); provider.SetDatabaseInitializer();//执行数据初始化 } } public int Order { //ensure that this task is run first get { return -1000; } } } }
//如何启动这些Task的?
private void RunStartupTasks() {
// namespace Nop.Core.Infrastructure.DependencyManagement. ContainerManager
// var typeFinder = _containerManager.Resolve<ITypeFinder>(); //传统方式通过IstartupTask接口找到所有的类
var startUpTaskTypes = typeFinder.FindClassesOfType<IStartupTask>(); var startUpTasks = new List<IStartupTask>(); foreach (var startUpTaskType in startUpTaskTypes)
//Activator.createInstance创建Instance startUpTasks.Add((IStartupTask)Activator.CreateInstance(startUpTaskType)); //sort 体现了如果根据Order排序 startUpTasks = startUpTasks.AsQueryable().OrderBy(st => st.Order).ToList(); foreach (var startUpTask in startUpTasks) startUpTask.Execute(); //调用Execute方式执行 }
总结:
通过以上的分析可以掌握如何使用IstartupTask架构来实现额外的系统数据初始化;回顾目前的三个StartupTask
EfstartupTask用于数据库数据的初始化;AdminStratupTask目前仅用于Telerik控件的语言本地化注册;AutoMapperStartup是用于通过AutoMapper创建OO映射的。
- Nop-通过IStartupTask实现代码执行<六>
- Nop-通过IStartupTask实现代码执行<六>
- NOP
- VC++ 通过IHTMLINTEFACE 接口实现网页执行自定义js代码
- 通过java代码实现dos环境下多条命令的执行
- Java通过缓存队列执行任务代码实现
- 通过代码实现autoresizing
- 通过分析SQL语句的执行计划优化SQL(六)
- 通过bat或shell执行java代码
- php 通过代码定时执行功能
- 通过Java代码执行shell命令/脚本
- PHP实现通过Web执行C/C
- PHP实现通过Web执行C/C
- 固定执行计划--通过OUTLINE实现
- 固定执行计划--通过 SQL profile实现
- 练习代码(六)通过异常处理错误
- 六行代码实现无组件上传
- C++代码札记(六)实现近似值算法
- 运行java和classpath
- PHP-UBB&hightlight 函数
- 如何应用Entity Framework进行数据访问
- 幻象
- C 数组指针
- Nop-通过IStartupTask实现代码执行<六>
- C#中Md5给密码加密
- rpm
- 查询数据库中所有表占用空间的语句
- Nop-Profiler的改进方向,通过Miniprofiler设置仅对某些条件下的访问开放profiler trace<七>
- simplescalar under Ubuntu/在Ubuntu10.04下安装simplescalar
- Robotium_创建自己的证书文件以及为apk/zip文件签名
- 风雨20年:我所积累的20条编程经验
- Qzone背后的故事:沉甸甸的爱,沉甸甸的疼