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. Hadoop核心组件

    1.Hadoop生态系统 2.HDFS(Hadoop分布式文件系统) 源自于Google的GFS论文,发表于2003年10月,HDFS是GFS克隆版. 是Hadoop体系中数据存储管理的基础.它是一个 ...

  2. nodejs express template (模版)的使用 (ejs + express)

    var app=require("express").createServer(); app.set("view engine","ejs" ...

  3. 20145308刘昊阳 《Java程序设计》第6周学习总结

    20145308刘昊阳 <Java程序设计>第6周学习总结 教材学习内容总结 第10章 输入/输出 10.1 InputStream与OutputStream 10.1.1 串流设计概念 ...

  4. 彻底弄明白之java多线程中的volatile

    一. volatite 简述 Java 语言提供了一种稍弱的同步机制,即 volatile 变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新. ...

  5. ThinkPHP3.2.3--Linux服务器首页文件index.php路径配置问题

    在windows服务器环境下,可以define ('SITE_URL','http://192.168.1.101/'); 但上传到linux服务器环境下不能正常解析,可使用相对路径:define ( ...

  6. linux命令之 top, free,ps

    linux终端查看cpu和内存使用情况 t一.op进入全屏实时系统资源使用信息查看 PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占 ...

  7. JAVA_用Java来获取访问者真实的IP地址

    在jsp里,获取客户端的ip地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  8. html学习:插入优酷视频

    第31期 读反心灵鸡汤 认清自己 擦,为什么不行??? <p>第31期 读反心灵鸡汤 认清自己</p> <div id="youku"> < ...

  9. Node.js 手册查询-1-核心模块方法

    Node.js 学习手册 标签(空格分隔): node.js 模块 核心模块 核心模块是被编译成二进制代码,引用的时候只需require表示符即可 os 系统基本信息 os模块可提供操作系统的一些基本 ...

  10. How parse REST service JSON response

    1. get JSON responses and go to : http://json2csharp.com/ 2. write data contracts using C# All class ...