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. 争夺 & KM思想

    题意: 给一张二分图,每个点与两个特定点又一条边相连,边权非负,让你给这个二分图每个点一个顶标,让每一条边两端顶标和大于等于这条边.求出最小顶标和. 这当然是翻译过的题目... 原题: 小Y和小P无聊 ...

  2. ACM 房间安排

    房间安排 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间, ...

  3. Codeforces Round #210 (Div. 2) A. Levko and Table

    让对角线的元素为k就行 #include <iostream> using namespace std; int main() { int n,k; cin >> n > ...

  4. 【BZOJ2456】mode 神奇的卡内存题

    以后把题解放在前面,估计没人看题解先看题... 内存1M,4个int(其实对内存的概念十分模糊),众数即为出现次数最多的数,可以用抵消的思想(但是众数不是可以是一大坨么...) #include &l ...

  5. JS 弹出模态窗口解决方案

    最近在项目中使用弹出模态窗口,功能要求: (1)模态窗口选择项目 (2)支持选择返回事件处理 在IE中有showModalDialog 方法,可以很好的解决该问题,但是在Chrome中和FF中就有问题 ...

  6. LBS基站数据解析接口

    http://www.cellocation.com/interfac/#hybrid http://www.cellid.cn/ https://www.juhe.cn/docs/api/id/8

  7. Linux文件/目录权限设置命令:chmod

    文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设定法 其语法格式为:chmod [w ...

  8. [MetroUI-1]无边框模式

    Wpf中取消边框,使用 WindowStyle="None" AllowsTransparency="True"

  9. [LintCode] Segment Tree Build II 建立线段树之二

    The structure of Segment Tree is a binary tree which each node has two attributes startand end denot ...

  10. Vue.js组件示例

    一 外部引入文件:(全局注册) //建模版 var mycomponent=Vue.extend( {template:"<div><a href='#'>我爱Jav ...