HTML5技术

基于nopCommerce的开发框架(附源码) - MikeXu(3)

字号+ 作者:H5之家 来源:H5之家 2017-05-27 11:05 我要评论( )

Dependency registrar DependencyRegistrar : IDependencyRegistrar{ Register services and interfaces Register(ContainerBuilder builder, ITypeFinder typeFinder, NopConfig config){ // 注入ObjectContext bu

Dependency registrar DependencyRegistrar : IDependencyRegistrar { Register services and interfaces Register(ContainerBuilder builder, ITypeFinder typeFinder, NopConfig config) { //注入ObjectContext builder.Register<IDbContext>(c => )).InstancePerLifetimeScope(); // 注入ef到仓储 builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope(); // 注入Service及接口 builder.RegisterAssemblyTypes(typeof(TestService).Assembly) .AsImplementedInterfaces() .InstancePerLifetimeScope(); //注入controllers builder.RegisterControllers(typeFinder.GetAssemblies().ToArray()); } Order of this dependency registrar implementation Order { get { return 2; } } }

View Code

  3. 配置文件中添加数据库访问节点

<add name=connectionString=providerName=/>

  4. 应用启动时添加初始化引擎上下文

  启动项目,这时NopEngine会报错,因为我们没有使用Nopconfig来配置项目,在RegisterDependencies方法中注释NopConfig的注入,同时在Initialize过程中将相关代码注释。这样就完成通过Autofac注入类到容器中。

public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //引擎上下文初始化 EngineContext.Initialize(false); } }

View Code

//RegisterDependencies方法中注释NopConfig的注入 Initialize(NopConfig config) { //register dependencies RegisterDependencies(config); //没有使用config,暂时注释 //register mapper configurations //RegisterMapperConfiguration(config); //startup tasks 没有启用任务,注释 //if (!config.IgnoreStartupTasks) //{ // RunStartupTasks(); //} }

View Code

  5. 在controller添加测试代码。将service添加到HomeController,在构造函数中初始化。系统启动后会自动注入实例。通过断点我们看到,数据成功添加到了数据库。

public class HomeController : Controller { public ITestService _testService; public HomeController( ITestService testService ) { _testService = testService; } public ActionResult Index() { var entity = new TestEntity() { CreateDate = DateTime.Now, Description = , Name = }; _testService.InsertTest(entity); var tests = _testService.GetAllTests(); return View(); }

View Code

  五、扩展到Webapi、Winform、WPF

 

  现在再添加一个winform项目,同样的步骤添加相关的代码。在Winform中我们也能使用业务的服务了。

  1. 通过Nuget安装autofac,entityframework, 添加项目Libraries下的引用。

  2. 添加依赖注册类,因为是winform项目,DependencyRegistrar这里需要做些调整,建议定义一个空接口IRegistrarForm,需要注入的Form实现IRegistrarForm。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 移动端布局 - 开发之路

    移动端布局 - 开发之路

    2017-05-24 09:01

  • 基于Babylonjs自制WebGL3D模型编辑器 - ljzc002

    基于Babylonjs自制WebGL3D模型编辑器 - ljzc002

    2017-05-21 15:01

  • kotlin, 一种新的android平台一级开发语言 - 陈宏鸿

    kotlin, 一种新的android平台一级开发语言 - 陈宏鸿

    2017-05-20 18:01

  • three.js粒子效果(分别基于CPUGPU实现) - cnwander

    three.js粒子效果(分别基于CPUGPU实现) - cnwander

    2017-05-18 13:00

网友点评
p