通過列舉名與型別名之間的微妙關係來省去類工廠的存在
阿新 • • 發佈:2021-10-29
定義類的共同介面:
1 interface IScene 2 { 3 }
定義幾個測試類:
1 public class LoginScene : IScene 2 { 3 } 4 5 public class MainScene : IScene 6 { 7 8 }
定義列舉(注意,列舉名字需要和類名一致):
1 public enum ESceneType 2 { 3 LoginScene, 4 MainScene 5 }
定義方法,通過列舉建立類物件:
1 IScene CreateScene(ESceneType eScenes) 2 { 3 Type type = Type.GetType(eScenes.ToString());4 IScene scene = (IScene)Activator.CreateInstance(type); 5 return scene; 6 }
測試:
1 public class Program 2 { 3 static void Main(string[] args) 4 { 5 var scene = CreateScene(ESceneType.LoginScene); 6 Console.WriteLine(scene.GetType()); 7 8 scene = CreateScene(ESceneType.MainScene);9 Console.WriteLine(scene.GetType()); 10 Console.ReadKey(); 11 } 12 }
輸出結果:
缺點:不能直接查出哪些類被使用了哪些類未被使用,在進行程式碼清理的時候,可能會被誤刪除,但是可以通過列舉是否被使用來間接判斷類是否被使用。