加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

autofac为MVC提供依赖注入,基于多层架构+mvc

发布时间:2020-12-13 19:41:26 所属栏目:百科 来源:网络整理
导读:Autofac 是应用于.Net平台的依赖注入(DI,Dependency Injection)容器,具有贴近、契合C#语言的特点! DAL中有一个userinfoDAL.cs public class userinfoDAL:IDAL.IUserinfo { public string getUserType(int Id) { if (Id == 1) return "1号首长"; return "政

Autofac是应用于.Net平台的依赖注入(DI,Dependency Injection)容器,具有贴近、契合C#语言的特点!

DAL中有一个userinfoDAL.cs
public class userinfoDAL:IDAL.IUserinfo
{
public string getUserType(int Id) {
if (Id == 1) return "1号首长";
return "政委";
}
}


类库IDAL中对应了一个接口 IUserinfo
public interface IUserinfo
{
string getUserType(int Id);
}
}


建立一个mvc 3项目
public class HomeController : Controller
{
private IDAL.IUserinfo _userinfo;
public HomeController(IDAL.IUserinfo userinfo) {
_userinfo = userinfo;
}


public ActionResult Index()
{
ViewData["message"] = _userinfo.getUserType(1);
return View();
}


}

在mvc3的Global.asax中加入配置的代码

protected void Application_Start()
{
//注入
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).AsImplementedInterfaces();
builder.RegisterType<userinfoDAL>().As<IUserinfo>().SingleInstance();//单列
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

//注入代码结束

AreaRegistration.RegisterAllAreas();

// 默认情况下对 Entity Framework 使用 LocalDB
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)v11.0; Integrated Security=True; MultipleActiveResultSets=True");

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}

运行程序即可显示结果如下图(简单测试的结果)

你需要引用到的组件是
using Autofac;
using Autofac.Integration.Mvc;

可以参考到:www.51tietu.net 的实现模式

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读