您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹關于反射技術的實際應用,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
如下圖:
在項目ConsoleApplication6.IService中,定義了兩個接口,Run代表行駛,Trun代表轉向,如下代碼:
1 namespace ConsoleApplication6.IService 2 { 3 /// <summary> 4 /// 創(chuàng)建一個車的接口 5 /// </summary> 6 public interface ICarService 7 { 8 /// <summary> 9 /// 行駛10 /// </summary>11 void Run();12 13 /// <summary>14 /// 轉向15 /// </summary>16 /// <param name="direction"></param>17 void Turn(Direction direction);18 19 }20 21 public enum Direction22 {23 East,24 Weast,25 South,26 North37 }28 }
這里新建了兩個項目分別實現插件程序,分別是ConsoleApplication6.Service.BMW和ConsoleApplication6.Service.BenZ,代碼如下:
1 namespace ConsoleApplication6.Service.BMW 2 { 3 public class BMWCarService: ICarService 4 { 5 /// <summary> 6 /// 行駛 7 /// </summary> 8 public void Run() 9 {10 Console.WriteLine("BMW Car Run!");11 }12 13 /// <summary>14 /// 轉向15 /// </summary>16 /// <param name="direction"></param>17 public void Turn(Direction direction)18 {19 Console.WriteLine(string.Format("BMW Car turn:{0}", direction.ToString()));20 }21 }22 }
1 namespace ConsoleApplication6.Service.BenZ 2 { 3 public class BenZCarService: ICarService 4 { 5 /// <summary> 6 /// 行駛 7 /// </summary> 8 public void Run() 9 {10 Console.WriteLine("BenZ Car Run!");11 }12 13 /// <summary>14 /// 轉向15 /// </summary>16 /// <param name="direction"></param>17 public void Turn(Direction direction)18 {19 Console.WriteLine(string.Format("BenZ Car turn:{0}", direction.ToString()));20 }21 }22 }
接下來我們就可以利用反射來運行這個插件程序了,如下代碼:
1 namespace ConsoleApplication6 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 var assembly = Assembly.Load("ConsoleApplication6.Service.BMW");//也可以從配置文件中讀取 8 var t = assembly.GetType("ConsoleApplication6.Service.BMW.BMWCarService");//也可以從配置文件中讀取 9 10 //創(chuàng)建一輛車的實例11 var obj = Activator.CreateInstance(t);12 ICarService car = obj as BMWCarService;13 if (car != null)14 {15 car.Run();16 car.Turn(Direction.East);17 }18 19 Console.ReadKey();20 }21 }22 }
這樣,一個簡單的插件程序就完成了,同時,如果我們開發(fā)類似的插件框架,就會大量使用到反射技術。
關于關于反射技術的實際應用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。