国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 通江县| 乌鲁木齐县| 吴江市| 临朐县| 东乡| 牙克石市| 中超| 武冈市| 柳河县| 隆昌县| 古交市| 报价| 赞皇县| 灵石县| 瓦房店市| 原阳县| 于田县| 密云县| 怀远县| 太原市| 丹巴县| 信丰县| 安图县| 岳普湖县| 丹棱县| 宁安市| 中西区| 永安市| 开江县| 前郭尔| 全州县| 武邑县| 福州市| 岐山县| 鸡西市| 唐海县| 马关县| 白河县| 灌阳县| 中阳县| 台东市|