您的位置:首页 > 移动开发 > Unity3D

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

2018-02-13 18:11 483 查看

这里的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.geek-share.com/detail/2561527102.html

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

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: