日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#反射方法學(xué)習(xí)總結(jié)

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

10年積累的網(wǎng)站設(shè)計制作、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有陜西免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

 
 
 
  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. }  

然后,建立再建立一個項目引入該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);//創(chuàng)建該類的實例,后面的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. //動態(tài)創(chuàng)建委托的簡單例子  
  113. Console.Write(method("str1",2));  
  114. Console.Read();  
  115. }  

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

【編輯推薦】

  1. 定義C#接口學(xué)習(xí)經(jīng)驗
  2. C# ListBox學(xué)習(xí)筆記
  3. 操作C# Dataset介紹
  4. C# ODBC訪問MySQL數(shù)據(jù)庫
  5. 淺析C#和Java不同點

名稱欄目:C#反射方法學(xué)習(xí)總結(jié)
當(dāng)前鏈接:http://www.5511xx.com/article/cosjdhg.html