十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章運(yùn)用簡(jiǎn)單易懂的例子給大家介紹關(guān)于反射技術(shù)的實(shí)際應(yīng)用,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
創(chuàng)新互聯(lián)是一家專業(yè)提供龍勝企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、HTML5建站、小程序制作等業(yè)務(wù)。10年已為龍勝眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
如下圖:
在項(xiàng)目ConsoleApplication6.IService中,定義了兩個(gè)接口,Run代表行駛,Trun代表轉(zhuǎn)向,如下代碼:
1 namespace ConsoleApplication6.IService 2 { 3 ///4 /// 創(chuàng)建一個(gè)車的接口 5 /// 6 public interface ICarService 7 { 8 ///9 /// 行駛10 /// 11 void Run();12 13 ///14 /// 轉(zhuǎn)向15 /// 16 /// 17 void Turn(Direction direction);18 19 }20 21 public enum Direction22 {23 East,24 Weast,25 South,26 North37 }28 }
這里新建了兩個(gè)項(xiàng)目分別實(shí)現(xiàn)插件程序,分別是ConsoleApplication6.Service.BMW和ConsoleApplication6.Service.BenZ,代碼如下:
1 namespace ConsoleApplication6.Service.BMW 2 { 3 public class BMWCarService: ICarService 4 { 5 ///6 /// 行駛 7 /// 8 public void Run() 9 {10 Console.WriteLine("BMW Car Run!");11 }12 13 ///14 /// 轉(zhuǎn)向15 /// 16 /// 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 ///6 /// 行駛 7 /// 8 public void Run() 9 {10 Console.WriteLine("BenZ Car Run!");11 }12 13 ///14 /// 轉(zhuǎn)向15 /// 16 /// 17 public void Turn(Direction direction)18 {19 Console.WriteLine(string.Format("BenZ Car turn:{0}", direction.ToString()));20 }21 }22 }
接下來(lái)我們就可以利用反射來(lái)運(yùn)行這個(gè)插件程序了,如下代碼:
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)建一輛車的實(shí)例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 }
這樣,一個(gè)簡(jiǎn)單的插件程序就完成了,同時(shí),如果我們開發(fā)類似的插件框架,就會(huì)大量使用到反射技術(shù)。
關(guān)于關(guān)于反射技術(shù)的實(shí)際應(yīng)用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。