SimpleInjector的使用    

  国庆大假,但是,小弟依然学习,前天去看了房交会,尼玛,吓屎宝宝了,还是安静的坐在公司里巧代码比较合适;

the usage of injector consists of four to six steps;

1.create a new container

2.configure the container(register)

3.[optionally] verify the container

4.store the container for use by the application

5.retrieve instances from the container(resolve)

6.[optionally] dispose the container when the application ends;

usage 1:(Getting an object by a specified type;

using SimpleInjector;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
public interface IUser
{
void show();
} public class User : IUser
{
public void show()
{
Console.WriteLine("show instance...国庆敲代码!");
}
} class Program
{ static void Injector()
{
var container = new Container();
container.Register<IUser, User>(); //这里完成我们测注册
var repository = container.GetInstance<IUser>();
repository.show(); }
static void Main(string[] args)
{ Injector();
Console.ReadLine();
}
}
}

 接下来是我们MVC中的实例

首先在集成MVC的时候,记得添加这个东东: Install-Package SimpleInjector.Integration.Web.Mvc

接口

 public interface IFuck
{
//这里是属性;
int a { get; set; } string show(string name); }

实现类

public class Fuck: Service.IFuck
{ public Fuck()
{
a = DateTime.Now.Millisecond;
}
public int a { get; set; }
public string show(string name)
{
return "fuck " + name+" "+a;
}
}

然后在global中注册;

using SimpleInjector;
using SimpleInjector.Integration.Web.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using WebApplication3.Service; namespace WebApplication3
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes); //ioc的注册主要是下面的这一坨代码地呀
var container = new Container();
container.Register<IFuck, ServiceImple.Fuck>(Lifestyle.Transient);
container.Verify();
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container)); }
}
}

最后再我们controller中使用滴呀;

  public class UserController : Controller
{
private readonly Service.IFuck _ifuck;
public UserController(Service.IFuck ifuck)
{
_ifuck = ifuck; //然后这里就是我们基本的
}
public ActionResult Test()
{
ViewBag.value = _ifuck.show(" 房地产开发商 ");
return View();
}
}

结果:

 接下来是我们API中的实例

首先你要添加这个东西;

SimpleInjector.Integration.WebApi

我这里就将就建立一个API的项目

添加路由;

 public class WebApiConfig
{
public static void Register(HttpConfiguration config)
{ config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
} }

global中注册

  GlobalConfiguration.Configure(App_Start.WebApiConfig.Register);  // 注册 api 路由 必须写在mvc 路由注册之前否则会找不到。

接着就是我们的ioc 注册的啦;

 总结:

 算了,还是看官网的教程吧,这文章写的太乱了;

这里我们总结了三种类型的IOC:返回实例,mvc,webapi

然后这个只是一个入门,在实际的大项目开发中,还有....

因为,没发现,注册的时候每次都要手动的去添加接口和服务吗?这样在大型团队开发中是很麻烦,

那么解决的方法就是:DLL,

下期节目我们再做解答;

  

  

SimpleInjector的使用的更多相关文章

  1. SimpleInjector与MVC4集成,与Web Api集成,以及通过属性注入演示

    SimpleInjector与MVC4集成,与Web Api集成,以及通过属性注入演示   1,与MVC集成 见http://simpleinjector.codeplex.com/wikipage? ...

  2. MVC+simpleinjector 简单使用

    一.首先添加NuGet包如下图

  3. C#开源

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  4. MVC WebAPI 三层分布式框架开发

    版权声明:本文为博主原创文章,未经博主允许不得转载. 前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理 ...

  5. C# 开源项目一

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  6. AspNet Identity and IoC Container Registration

    https://github.com/trailmax/IoCIdentitySample TL;DR: Registration code for Autofac, for SimpleInject ...

  7. How To Easily Call WCF Services Properly z

    Please note: this article has been superceded by the documentation for the ChannelAdam WCF Library. ...

  8. C#开源大全--汇总(转)

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  9. Redis Master/Slave 实践

    本次我们将模拟 Master(1) + Slave(4) 的场景,并通过ASP.NET WEB API进行数据的提交及查询,监控 Redis Master/Slave 数据分发情况,只大致概述,不会按 ...

随机推荐

  1. BZOJ3551 : [ONTAK2010]Peaks加强版

    首先强制在线的话,肯定是不能再离线排序+平衡树启发式合并了. 这回要用的是线段树合并,每次把两棵线段树合并,总复杂度为$O(n\log n)$ 预处理: 把边按权值从小到大排序,依次加边, 对于边(x ...

  2. (转)STORM启动与部署TOPOLOGY

    STORM启动与部署TOPOLOGY 启动ZOOPKEEPER zkServer.sh start 启动NIMBUS storm nimbus & 启动SUPERVISOR storm sup ...

  3. C#_简单实用的翻页

    简单实用的生成翻页HTML辅助类 C# using System.Text; namespace ClassLibrary { /// <summary> /// /// </sum ...

  4. 基于Solr的HBase多条件查询测试

    背景: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级 的快 速检索,对于多字段的组合查询却无能为力.针对HBa ...

  5. row_number() over order by与利用rownum查询分页效率分析

    实际测试: 数据库:70万条数据 查询第10000页,每页10条.row_number() 耗时: 2.2秒rownum 耗时:1.3秒 查询第20000页,每页10条.row_number() 耗时 ...

  6. [转] 擎天哥as3教程系列第二回——性能优化

    所谓性能优化主要是让游戏loading和运行的时候不卡. 一  优化fla导出的swf的体积? 1,  在flash中,舞台上的元件最多,生成的swf越大,库里面有连接名的元件越多,swf越大.当舞台 ...

  7. MySql_设置编码

    1.查看mysql编码(默认latin1) show variables like 'collation_%'; +--------------------------+--------------- ...

  8. SPARK 中 DriverMemory和ExecutorMemory

    spark中,不论spark-shell还是spark-submit,都可以设置memory大小,但是有的同学会发现有两个memory可以设置.分别是driver memory 和executor m ...

  9. Js练笔——用循环和递归实现追踪对象深度(循环引用关系不考虑)

    function reobs(obj){ //返回对象中对象属性组成的数组 var a=[]; var b=[]; for(it in obj){ a.push(it); } for(var i=0; ...

  10. HTTP协议 (六) 状态码详解

    HTTP协议 (六) 状态码详解 HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了.  如果 ...