日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# MVC IOC、依赖注入

發(fā)布時間:2023/12/1 C# 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# MVC IOC、依赖注入 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在MVC5中依賴注入,本文介紹通過掃描類型RegisterAssemblyTypes來進行注冊

另外還有掃描模塊RegisterAssemblyModules來注冊

?使用Autofac框架進行組件的依賴注入

Autofac是.NET領域最為流行的IOC框架之一,傳說是速度最快的一個

?

先通過Nuget安裝程序包

PM> install-package atuofac

PM> install-package atuofac.mvc5

一般的做法是設計一個空的IDependency的接口,讓所有想要加入到IOC中的類實現(xiàn)這個接口

interface IDependency{} public class NormalService:IDependency{public string testIoc(){return "IoC Test";}}

在Global中進行設置

添加引用

using Autofac;
using Autofac.Integration.Mvc;//注冊Controller時需要

//獲取已加載到此應用程序域的執(zhí)行上下文中的程序集。Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies().ToArray();
// Assembly[] assemblies = Directory.GetFiles(AppDomain.CurrentDomain.RelativeSearchPath, "*.dll").Select(Assembly.LoadFrom).ToArray();//var assemblies = Assembly.GetExecutingAssembly();//創(chuàng)建autofac管理注冊類的容器實例ContainerBuilder builder = new ContainerBuilder();//注冊所有實現(xiàn)了 IDependency 接口的類型Type baseType = typeof(IDependency);builder.RegisterAssemblyTypes(assemblies).Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract).AsSelf().AsImplementedInterfaces().PropertiesAutowired().InstancePerLifetimeScope();// 設置MVC的DependencyResolver注冊點 builder.RegisterControllers(assemblies).AsSelf().PropertiesAutowired().InstancePerLifetimeScope();DependencyResolver.SetResolver(new AutofacDependencyResolver(builder.Build()));

?

NormalService的使用

public NormalService normalService { get; set; }[HttpGet]public JsonResult GetIocMethod(){string strIocReturn= normalService.testIoc();return Json(strIocReturn,JsonRequestBehavior.AllowGet);}

?

如果NormalService是實現(xiàn)接口INormalService的話

public interface INormalService{string testIoc();} public class NormalService:IDependency,INormalService{public string testIoc(){return "IoC Test";}} public INormalService normalService { get; set; }[HttpGet]public JsonResult GetIocMethod(){string strIocReturn= normalService.testIoc();return Json(strIocReturn,JsonRequestBehavior.AllowGet);}

?

除了通過統(tǒng)一實現(xiàn)IDependency的方式來進行注冊外,單個類型的注冊

builder.RegisterType<NormalService>().As<INormalService>().AsSelf().PropertiesAutowired().InstancePerLifetimeScope();

builder.RegisterType<DbContextScopeFactory>().As<IDbContextScopeFactory>()
.AsSelf().AsImplementedInterfaces()
.InstancePerLifetimeScope().PropertiesAutowired();

?

這些就是在MVC中進行依賴注入的方式

?

轉(zhuǎn)載于:https://www.cnblogs.com/pashanhu/p/9656840.html

總結(jié)

以上是生活随笔為你收集整理的C# MVC IOC、依赖注入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。