Simple usage of Reflection and Dependency Injection
前言 這一篇主要是要記錄一下反射(Reflection)的方便用法,作為以後的備忘。底下的範例會順便用一些Depency Injection的觀念來實作。 根據MSDN的描述 反映 (Reflection) 會提供 Type 型別的物件,用來描述組件、模組和型別。 您可以使用反映來動態建立型別的執行個體、將型別繫結至現有物件,或從現有物件取得型別,並叫用其方法或存取其欄位和屬性。 如果您在程式碼中使用屬性,反映可讓您存取這些屬性。 情境 在動物園裡面有很多不同的動物園區,每個動物園區都可以看到專屬於該園區的動物。當遊客買票進去時,可以依據票的種類去不同的園區觀賞。假設目前我們有兩個園區: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 /// 獅子王動物園區 public class LionKing { private ICollection<string> _Pool; public LionKink() { _Pool = new List<string>{ "Simba", "Nala", "Pumbaa", "丁滿" }; } public void SeeAnimals() { foreach(var name in _pool) Console.WriteLine("在動物園區我看到 {0}."name); } } /// 憤怒鳥動物園區 public class AngryBird { private ICollection<string> _Pool; public AngryBird() { _Pool = new List<string> { "RedBird", "BlueBird", "YellowBird" }; } public void SeeAnimals() { foreach(var name in _pool) Console.WriteLine("在動物園區我看到{0}."name); } } 方法: 通常看到這樣的需求有一種寫法是最簡單直覺的: ...