成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#反射方法學習總結

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

在網上查找了不少的資料,可以說大同小異,概念性的東西網上一搜一堆,今天把C#反射方法的東西整理了一下,供大家使用,我保證我這里是最全面的東西,當然也是基礎的東西,在學好了這一切的基礎上,大家可以學習C#反射方法的具體插件等應用,老鳥就不用看了。首先我們建立一個類庫,將它生成為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"您使用的是無參數方法";  
  69. }  
  70.  
  71. privatestringWritePrivate()  
  72. ...{  
  73. return"私有類型的方法";  
  74. }  
  75.  
  76.  
  77. publicintadd()  
  78. ...{  
  79. return5;  
  80. }  
  81. }  

然后,建立再建立一個項目引入該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);//得到具體的類的類型,和下面一個效果  
  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);//創建該類的實例,后面的bb為有參構造函數的參數  
  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=...{"使用的是帶有參數的非靜態方法",2};  
  51. strings=(string)mi.Invoke(obj,aa);//帶參數方法的調用  
  52.  
  53. MethodInfomi1=a.GetMethod("WriteName");  
  54. String[]aa1=...{"使用的是靜態方法"};  
  55. strings1=(string)mi1.Invoke(null,aa1);//靜態方法的調用  
  56.  
  57. MethodInfomi2=a.GetMethod("WriteNoPara");  
  58. strings2=(string)mi2.Invoke(obj,null);//不帶參數的方法調用  
  59.  
  60. MethodInfomi3=a.GetMethod("WritePrivate",BindingFlags.Instance|BindingFlags.NonPublic);  
  61. strings3=(string)mi3.Invoke(obj,null);//私有類型方法調用  
  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());//獲得構造函數的形式  
  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. //動態創建委托的簡單例子  
  113. Console.Write(method("str1",2));  
  114. Console.Read();  
  115. }  

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

【編輯推薦】

  1. 定義C#接口學習經驗
  2. C# ListBox學習筆記
  3. 操作C# Dataset介紹
  4. C# ODBC訪問MySQL數據庫
  5. 淺析C#和Java不同點
責任編輯:佚名 來源: IT168
相關推薦

2009-08-21 18:01:32

C#匿名方法

2009-08-14 17:38:08

C#改寫方法

2009-08-27 09:27:49

C#擴展方法

2009-08-31 16:51:11

C# Main()方法

2009-08-14 09:41:03

C#遺傳算法

2009-08-21 08:41:44

C#反射

2009-08-13 18:21:52

C#學習筆記

2021-03-15 08:18:23

C#反射模塊

2009-08-20 18:06:18

學習C#接口

2009-08-13 18:13:27

C#學習經驗

2009-09-09 13:31:15

C# TextBox

2009-08-31 09:41:05

C#反射靜態方法開發

2009-08-24 16:19:42

C# 泛型方法

2009-08-13 10:52:03

C#基礎概念

2009-08-11 14:20:41

C# .NET學習經驗

2015-07-07 10:43:59

Swift語法基礎

2015-07-07 10:58:29

Swift語法高級

2009-08-21 14:16:35

C# New關鍵字

2009-08-14 10:16:57

C#運算符重載

2009-09-01 13:10:39

C#讀取Word
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区不卡 | 国产精品久久影院 | 最新中文字幕在线 | 日本三级全黄三级a | 国产精品久久久久久久久久免费看 | 成人亚洲精品 | 成人免费一区二区三区视频网站 | 在线观看免费福利 | 一区二区三区四区免费观看 | 99爱视频| 成人深夜福利 | 精品视频一区二区 | 天天天天操 | 欧美黄色免费网站 | 婷婷桃色网 | 全免费a级毛片免费看视频免费下 | 久久精品国产免费看久久精品 | 成人亚洲视频 | 久久久久无码国产精品一区 | 成人av免费播放 | 91精品久久久久久久 | 国产亚洲精品精品国产亚洲综合 | 国产97在线视频 | 偷拍自拍网址 | 中文字幕日本一区二区 | a在线免费观看 | 日韩欧美一区二区三区免费观看 | av在线播放国产 | 欧美一区二区三区大片 | 黄色一级网 | 久久精品欧美电影 | 国产1区2区 | 99精品欧美一区二区三区综合在线 | 国产精品欧美一区二区三区 | 欧美一区二区三区 | 国产精品欧美一区二区三区不卡 | 精品三区 | 国内精品在线视频 | 亚洲精品永久免费 | 国产免费看 | 国产成人免费视频网站视频社区 |