unity(c#ioc框架)使⽤总结
这⾥的unity指的是完成依赖注⼊的unity⽽不是游戏引擎。
原本项⽬完成依赖注⼊⽤的是spring,但是spring已经很久没⼈维护了,所以微软官⽅推出的Unity成为了替代spring的最佳候选之⼀。
简单控制台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 mvc⾥使⽤unity:
1、新建asp 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";
}
}
}webapp是什么架构
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。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论