• unity(c# ioc框架) 使用总结


    这里的unity指的是完成依赖注入的unity而不是游戏引擎。

    原本项目完成依赖注入用的是spring.net,但是spring.net已经很久没人维护了,所以微软官方推出的Unity成为了替代spring.net的最佳候选之一。

    简单控制台demo:

    首先新建控制台应用,nuget搜索unity并安装。

    using System;  
    using Unity;
    using Unity.Attributes;
    
    namespace ConsoleApp1
    {
        public class Index
        {
            
            [Dependency]
            public virtual IUserService UserService { set; get; }
    
            public static void Main(string[] args)
            {
                var container = new UnityContainer();
                container.RegisterType<IUserService, UserService>();           //注册
                IUserService userService = container.Resolve<IUserService>();  //获取
                userService.Hello();
            }
        }
    
        public interface IUserService
        {
            void Hello();
        }
    
        class UserService : IUserService
        {
            public void Hello()
            {
                Console.WriteLine("hello");
            }
        }
    }

    在asp.net mvc里使用unity:

    1、新建asp.net mvc应用,nuget安装unity.mvc

    2、新建类库BLL、IBLL,完成后目录如下:

    3、BLL新建UserService,IBLL新建IUserService,实现Hello方法

    namespace IBLL
    {
        public interface IUserService
        {
            string Hello();
        }
    
    }
    using IBLL;
    
    namespace BLL
    {
        public class UserService:IUserService
        {
            public string Hello()
            {
                return "hello";
            }
        }
    }

    4:在Global.asax.cs里填写配置。示例如下:

    using System.Web.Mvc;
    using System.Web.Optimization;
    using System.Web.Routing;
    using BLL;
    using IBLL;
    using Unity;
    using Unity.AspNet.Mvc;
    
    namespace WebApp
    {
        public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
    
                var container = BuildUnityContainer();        //自定义BuildUnityContainer方法,获取容器
                DependencyResolver.SetResolver(new UnityDependencyResolver(container));
    
            }
    
            IUnityContainer BuildUnityContainer()
            {
                UnityContainer container = new UnityContainer();
                container.RegisterType<IUserService, UserService>();return container;
            }
        }
    }

    5、在Control中获得UserService类并使用

    using System.Web.Mvc;
    using IBLL;
    
    namespace WebApp.Controllers
    {
        public class HomeController : Controller
        {
            private IUserService UserService;public HomeController(IUserService userService)
            {
                this.UserService = userService;   //使用构造函数注入
            }
    
            public ActionResult Index()
            {
                string str = UserService.Hello();
                return Content(str);
            }
    
        }
    }

    这样就完成了一个最简单的mvc demo。

    别的如使用配置文件、使用其他方法注入等详细操作,可以参考这篇博文:https://www.cnblogs.com/qqlin/archive/2012/10/18/2720828.html

    unity官方文档:https://msdn.microsoft.com/en-us/library/ff649564.aspx

  • 相关阅读:
    BZOJ1862: [Zjoi2006]GameZ游戏排名系统
    BZOJXXXX: [IOI2000]邮局——四边形不等式优化初探
    BZOJ1801: [Ahoi2009]chess 中国象棋
    BZOJ1505: [NOI2004]小H的小屋
    BZOJ1899: [Zjoi2004]Lunch 午餐
    BZOJ1057: [ZJOI2007]棋盘制作
    BZOJ1100: [POI2007]对称轴osi
    BZOJ1123: [POI2008]BLO
    线性规划之单纯形讲解
    BZOJ 3265 志愿者招募加强版(单纯形)
  • 原文地址:https://www.cnblogs.com/axel10/p/8447155.html
Copyright © 2020-2023  润新知