1. 程式人生 > >C# 依賴註入????

C# 依賴註入????

.text tasks 方法 service text public console generic div

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ABCDEFG
{
    public class 依賴註入
    {
        public void test()
        {
            // 功能是 傳遞不同對象, 執行不同對象下的方法. ( 有隱式轉換)

            //ServiceClassA serviceA = new ServiceClassA();  
//創建 A對象 //ServiceClassB serviceB = new ServiceClassB(); //創建B對象 //ClientClass client = new ClientClass(); // 創建 客戶端類對象 //client.Set_ServiceImpl(serviceA); //client.ShowInfo();//結果:我是ServceClassA //client.Set_ServiceImpl(serviceB); //client.ShowInfo();
//結果:我是ServceClassB //Console.ReadLine(); //通過構造函數註入 ServiceClassA serviceA = new ServiceClassA(); //創建 A對象 ServiceClassB serviceB = new ServiceClassB(); //創建B對象 ClientClass client = new ClientClass(serviceA); // 創建 客戶端類對象 client.ShowInfo();//
結果:我是ServceClassA client = new ClientClass(serviceA); client.ShowInfo();//結果:我是ServceClassB Console.ReadLine(); } } //internal 同一程序集內訪問 //interface 接口 interface IServiceClass //定義 服務 接口類 { String ServiceInfo(); } class ServiceClassA : IServiceClass //A繼承接口 ; 實現方法 { public String ServiceInfo() { return "我是ServceClassA"; } } class ServiceClassB : IServiceClass //B繼承接口 ; 實現方法 { public String ServiceInfo() { return "我是ServceClassB"; } } #region ---Setter註入 //class ClientClass //定義 客戶 接口類 //{ // //註入點 // private IServiceClass _serviceImpl; //聲明接口變量 // //客戶類中的方法,初始化註入點 // public void Set_ServiceImpl(IServiceClass serviceImpl) // { // this._serviceImpl = serviceImpl; // } // public void ShowInfo() // { // Console.WriteLine(_serviceImpl.ServiceInfo()); // } //} #endregion #region --構造註入 class ClientClass { private IServiceClass _serviceImpl; public ClientClass(IServiceClass serviceImpl) { this._serviceImpl = serviceImpl; } public void ShowInfo() { Console.WriteLine(_serviceImpl.ServiceInfo()); } } #endregion }

C# 依賴註入????