码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-02-13 18:53:47      阅读:1871      评论:0      收藏:0      [点我收藏+]

标签:virtual   mes   构造   start   tab   arch   目录   undle   微软官方   

这里的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

 

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

标签:virtual   mes   构造   start   tab   arch   目录   undle   微软官方   

原文地址:https://www.cnblogs.com/axel10/p/8447155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!