自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#反射方法學(xué)習(xí)總結(jié)

開發(fā) 后端
本文介紹今天把C#反射方法的東西整理了一下,供大家使用,我保證我這里是最全面的東西,當(dāng)然也是基礎(chǔ)的東西。

在網(wǎng)上查找了不少的資料,可以說大同小異,概念性的東西網(wǎng)上一搜一堆,今天把C#反射方法的東西整理了一下,供大家使用,我保證我這里是最全面的東西,當(dāng)然也是基礎(chǔ)的東西,在學(xué)好了這一切的基礎(chǔ)上,大家可以學(xué)習(xí)C#反射方法的具體插件等應(yīng)用,老鳥就不用看了。首先我們建立一個(gè)類庫(kù),將它生成為HelloWorld.dll:

  1. usingSystem;  
  2.  
  3. namespaceWebtest  
  4. ...{  
  5.  
  6. publicinterfaceinterface1  
  7. ...{  
  8. intadd();  
  9.  
  10. }  
  11. publicclassReflectTest:interface1  
  12. ...{  
  13.  
  14. publicStringWrite;  
  15. privateStringWritec;  
  16.  
  17. publicStringWritea  
  18. ...{  
  19. get  
  20. ...{  
  21. returnWrite;  
  22. }  
  23. set  
  24. ...{  
  25. Write=value;  
  26. }  
  27.  
  28. }  
  29.  
  30. privateStringWriteb  
  31. ...{  
  32. get  
  33. ...{  
  34. returnWritec;  
  35. }  
  36. set  
  37. ...{  
  38. Writec=value;  
  39. }  
  40.  
  41. }  
  42.  
  43. publicReflectTest()  
  44. ...{  
  45. this.Write="Write";  
  46. this.Writec="Writec";  
  47. }  
  48.  
  49. publicReflectTest(stringstr1,stringstr2)  
  50. ...{  
  51. this.Write=str1;  
  52. this.Writec=str2;  
  53.  
  54. }  
  55.  
  56. publicstringWriteString(strings,intb)  
  57. ...{  
  58. return"歡迎您,"+s+"---"+b;;  
  59. }  
  60.  
  61. publicstaticstringWriteName(strings)  
  62. ...{  
  63. return"歡迎您光臨,"+s;  
  64. }  
  65.  
  66. publicstringWriteNoPara()  
  67. ...{  
  68. return"您使用的是無參數(shù)方法";  
  69. }  
  70.  
  71. privatestringWritePrivate()  
  72. ...{  
  73. return"私有類型的方法";  
  74. }  
  75.  
  76.  
  77. publicintadd()  
  78. ...{  
  79. return5;  
  80. }  
  81. }  

然后,建立再建立一個(gè)項(xiàng)目引入該HelloWorld.dll:

  1. usingSystem;  
  2.  
  3. usingSystem.Threading;  
  4. usingSystem.Reflection;  
  5.  
  6.  
  7. classTest  
  8. ...{  
  9. delegatestringTestDelegate(stringvalue,intvalue1);  
  10.  
  11. staticvoidMain()  
  12. ...{  
  13. //AssemblyAssemblyt=Assembly.LoadFrom("HelloWorld.dll");與下面相同的效果  
  14. AssemblyAssemblyt=Assembly.Load("HelloWorld");  
  15.  
  16.  
  17. foreach(Typeaaaint.GetTypes())  
  18. ...{  
  19. //Console.Write(aaa.Name);//顯示該dll下所有的類  
  20. }  
  21.  
  22.  
  23. Module[]modules=t.GetModules();  
  24.  
  25. foreach(Modulemoduleinmodules)  
  26. ...{  
  27. //Console.WriteLine("modulename:"+module.Name);//顯示模塊的名字本例為"HelloWorld.dll"  
  28. }  
  29.  
  30.  
  31. Typea=typeof(Webtest.ReflectTest);//得到具體的類的類型,和下面一個(gè)效果  
  32.  
  33. //Typea=t.GetType("Webtest.ReflectTest");//  
  34. //Console.Write(a.Name);  
  35.  
  36.  
  37. string[]bb=...{"aaaa","bbbbb"};  
  38. objectobj=Activator.CreateInstance(a,bb);//創(chuàng)建該類的實(shí)例,后面的bb為有參構(gòu)造函數(shù)的參數(shù)  
  39. //objectobj=t.CreateInstance("Webtest.ReflectTest");//與上面方法相同  
  40.  
  41.  
  42. MethodInfo[]miArr=a.GetMethods();  
  43. foreach(MethodInfomi0inmiArr)  
  44. ...{  
  45. //Console.Write(mi0.Name);//顯示所有的共有方法  
  46. }  
  47.  
  48.  
  49. MethodInfomi=a.GetMethod("WriteString");//顯示具體的方法  
  50. object[]aa=...{"使用的是帶有參數(shù)的非靜態(tài)方法",2};  
  51. strings=(string)mi.Invoke(obj,aa);//帶參數(shù)方法的調(diào)用  
  52.  
  53. MethodInfomi1=a.GetMethod("WriteName");  
  54. String[]aa1=...{"使用的是靜態(tài)方法"};  
  55. strings1=(string)mi1.Invoke(null,aa1);//靜態(tài)方法的調(diào)用  
  56.  
  57. MethodInfomi2=a.GetMethod("WriteNoPara");  
  58. strings2=(string)mi2.Invoke(obj,null);//不帶參數(shù)的方法調(diào)用  
  59.  
  60. MethodInfomi3=a.GetMethod("WritePrivate",BindingFlags.Instance|BindingFlags.NonPublic);  
  61. strings3=(string)mi3.Invoke(obj,null);//私有類型方法調(diào)用  
  62.  
  63. //Console.Write(s3);  
  64.  
  65.  
  66. PropertyInfo[]piArr=a.GetProperties
    (BindingFlags.Instance|BindingFlags.NonPublic|BindingFlags.Public);  
  67. foreach(PropertyInfopiinpiArr)  
  68. ...{  
  69. //Console.Write(pi.Name);//顯示所有的方法  
  70. }  
  71.  
  72.  
  73. PropertyInfopi1=a.GetProperty("Writea");  
  74. //pi1.SetValue(obj,"Writea",null);  
  75. //Console.Write(pi1.GetValue(obj,null));  
  76.  
  77. PropertyInfopi2=a.GetProperty
    ("Writeb",BindingFlags.Instance|BindingFlags.NonPublic|BindingFlags.Public);  
  78. pi2.SetValue(obj,"Writeb",null);  
  79. //Console.Write(pi2.GetValue(obj,null));  
  80.  
  81. FieldInfofi1=a.GetField("Write");  
  82. //Console.Write(fi1.GetValue(obj));  
  83.  
  84.  
  85. ConstructorInfo[]ci1=a.GetConstructors();  
  86. foreach(ConstructorInfociinci1)  
  87. ...{  
  88. //Console.Write(ci.ToString());//獲得構(gòu)造函數(shù)的形式  
  89. }  
  90.  
  91. ConstructorInfoasCI=a.GetConstructor(newType[]...{
  92. typeof(string),typeof(string)});  
  93. //Console.Write(asCI.ToString());  
  94.  
  95.  
  96. Webtest.interface1obj1=(Webtest.interface1)t.CreateInstance
    ("Webtest.ReflectTest");  
  97. Webtest.ReflectTestobj2=(Webtest.ReflectTest)t.CreateInstance("Webtest.ReflectTest");  
  98. //Console.Write(obj1.add());典型的工廠模式  
  99.  
  100.  
  101. foreach(Typettint.GetTypes())  
  102. ...{  
  103. if(tt.GetInterface("interface1")!=null)  
  104. ...{  
  105. Webtest.interface1obj3=(Webtest.interface1)Activator.CreateInstance(a);  
  106. //Console.Write(obj3.add());  
  107. }  
  108. }  
  109.  
  110.  
  111. TestDelegatemethod=(TestDelegate)Delegate.CreateDelegate
    (typeof(TestDelegate),obj,"WriteString");  
  112. //動(dòng)態(tài)創(chuàng)建委托的簡(jiǎn)單例子  
  113. Console.Write(method("str1",2));  
  114. Console.Read();  
  115. }  

在這里我把我們常用的方法,屬性,等全部整理了出來,大家不要嫌棄亂,靜下心來,自己按照我的分隔一部分一部分的來,保證你對(duì)C#反射方法的學(xué)習(xí),會(huì)事半功倍.當(dāng)然有關(guān)于其方法我會(huì)繼續(xù)補(bǔ)充,想了這么些就先寫下來吧。

【編輯推薦】

  1. 定義C#接口學(xué)習(xí)經(jīng)驗(yàn)
  2. C# ListBox學(xué)習(xí)筆記
  3. 操作C# Dataset介紹
  4. C# ODBC訪問MySQL數(shù)據(jù)庫(kù)
  5. 淺析C#和Java不同點(diǎn)
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-08-21 18:01:32

C#匿名方法

2009-08-27 09:27:49

C#擴(kuò)展方法

2009-08-31 16:51:11

C# Main()方法

2009-08-14 17:38:08

C#改寫方法

2009-08-14 09:41:03

C#遺傳算法

2009-08-21 08:41:44

C#反射

2009-08-13 18:21:52

C#學(xué)習(xí)筆記

2021-03-15 08:18:23

C#反射模塊

2009-09-09 13:31:15

C# TextBox

2009-08-13 18:13:27

C#學(xué)習(xí)經(jīng)驗(yàn)

2009-08-20 18:06:18

學(xué)習(xí)C#接口

2009-08-31 09:41:05

C#反射靜態(tài)方法開發(fā)

2009-08-24 16:19:42

C# 泛型方法

2009-08-11 14:20:41

C# .NET學(xué)習(xí)經(jīng)驗(yàn)

2009-08-13 10:52:03

C#基礎(chǔ)概念

2015-07-07 10:43:59

Swift語(yǔ)法基礎(chǔ)

2015-07-07 10:58:29

Swift語(yǔ)法高級(jí)

2009-08-14 17:52:27

C#對(duì)象初始化

2009-04-10 09:55:44

C#反射.NET

2009-08-21 14:16:35

C# New關(guān)鍵字
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)