• SimpleInjector的使用


    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,

    下期节目我们再做解答;

      

      

  • 相关阅读:
    UIApplication常见属性与方法总结--ios
    The Swift Programming Language 中文版---Swift 初见
    The Swift Programming Language 中文版-----关于 Swift
    IDEA启动Jetty报404
    如何制作Win10系统U盘安装镜像
    常用软件下载开发环境七牛镜像Java、Node、Mongo
    Java反射获取当前项目下所有类,支持Servlet
    document文档流详解
    javax.el.PropertyNotFoundException: Property [name] not readable on type
    tomcat绑定域名绑定端口及更换ROOT目录
  • 原文地址:https://www.cnblogs.com/mc67/p/5932455.html
Copyright © 2020-2023  润新知