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,
下期节目我们再做解答;