国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 擴展 > MVC > 正文

MVC使用Spring.Net應用IOC(依賴倒置)學習筆記3

2024-09-06 20:44:35
字體:
供稿:網(wǎng)友

      到現(xiàn)在,我們已經(jīng)基本搭建起了項目的框架,但是項目中還存在一個問題,就是盡管層與層之間使用了接口進行隔離,但實例化接口的時候,還是引入了接口實現(xiàn)類的依賴,如下面的代碼:

private IUserService _userService;private IUserService UserService{ get { return _userService ?? (_userService = new UserService()); } set { _userService = value; }}

        面向接口編程,Controller應該只依賴于站點業(yè)務層的接口,而不能依賴于具體的實現(xiàn),否則,就違背了在層之間設置接口的初衷了。

       另外,如果上層只依賴于下層的接口,在做單元測試的時候,就可以用Moq,F(xiàn)akes等Mock工具來按實際需求來模擬接口的實現(xiàn),就可以靈活的控制接口的返回值來對各種情況進行測試,如果依賴于具體的實現(xiàn),項目的可測試性將大大減小,不利于進行自動化的單元測試。

要不依賴于具體的實現(xiàn),就不能使用通常的 T t = new T() 的方式來獲得一個類的實例了,需要通過IOC容器來對對象生命周期,依賴關系等進行統(tǒng)一的管理,這里,我們將使用Spring.Net應用IOC。 

Spring.Net在控制臺程序中的使用 

我們將通過一個簡單的控制臺示例來展示Spring.Net的使用方法

創(chuàng)建測試用的類:

namespace SpringNetDemo{ public interface IClass {  string Name { get; set; }  Student Monitor { get; set; }  string GetMsg(); } public class Class : IClass {  public string Name { get; set; }  public Student Monitor { get; set; }  public string GetMsg()  {   return "班級名稱:" + Name + ",班長:" + Monitor.Name;  } } public class Student {  public string Name { get; set; } }}

兩個類,一個接口,Student類中有一個string類型的屬性,為Name,Class類中除了string類型的Name屬性外還有一個Student類型的Monitor屬性,方法GetMsg可以返回當前Class對象的簡介,包括班級名和班長名兩個內(nèi)容。Class類實現(xiàn)IClass接口。 

先做簡單的測試:

IClass c6=new Class(){ Monitor = new Student() {  Name = "李芙蓉" }, Name = "六班"};Console.WriteLine(c6.GetMsg());Console.ReadKey();

輸出為:

接下來,我們換用Spring.Net容器來聲明對象

1. 首先引用dll文件

   

需要核心庫Spring.Core.dll和Spring.Net使用的日志記錄組件Common.Logging.dll

2. 然后我們需要了解當前的程序集名稱和命名空間

   

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 河东区| 福泉市| 泾川县| 灵璧县| 虎林市| 金乡县| 安平县| 曲阜市| 台中市| 郎溪县| 龙游县| 台东市| 利辛县| 通榆县| 淄博市| 许昌县| 开平市| 安泽县| 双柏县| 揭阳市| 赣州市| 永川市| 临西县| 黄梅县| 鄂尔多斯市| 农安县| 五家渠市| 碌曲县| 郓城县| 天峻县| 和顺县| 阳泉市| 东至县| 绥滨县| 文化| 拜泉县| 上高县| 淮阳县| 海南省| 三河市| 德阳市|