偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

學(xué)習(xí)反射中的動(dòng)態(tài)創(chuàng)建對(duì)象

開(kāi)發(fā) 后端
利用反射動(dòng)態(tài)的創(chuàng)建對(duì)象一般可以使用兩種方法,Assembly的CreateInstance方法。本文將介紹這兩種方法。

Assembly的CreateInstance有三個(gè)重載,***個(gè)參數(shù)需要是一個(gè)字符串表示的完整的類(lèi)名。第二個(gè)參數(shù)是一個(gè)bool類(lèi)型,如果為true,表示對(duì)***個(gè)參數(shù)不區(qū)分大小寫(xiě)。

第三個(gè): 影響執(zhí)行搜索的方式的位屏蔽。此值是 System.Reflection.BindingFlags 中的位標(biāo)志的組合。

 //   binder:   一個(gè)啟用綁定、參數(shù)類(lèi)型強(qiáng)制、成員調(diào)用以及通過(guò)反射進(jìn)行 MemberInfo 對(duì)象檢索的對(duì)象。
如果 binder 為 null,則使用默認(rèn)聯(lián)編程序。
//   args:  Object 類(lèi)型的數(shù)組,包含要傳遞給構(gòu)造函數(shù)的參數(shù)。此參數(shù)數(shù)組在數(shù)量、順序和類(lèi)型方面必須

與要調(diào)用的構(gòu)造函數(shù)的參數(shù)匹配。如果需要默認(rèn)的構(gòu)造函數(shù),則 args 必須是空數(shù)組或 null。

 //   culture:   用于控制類(lèi)型強(qiáng)制的 CultureInfo 的實(shí)例。如果這是 null,則使用當(dāng)前線程的 CultureInfo。(例如,這對(duì)于將表示 1000   的 String 轉(zhuǎn)換為

Double 值是必需的,因?yàn)椴煌膮^(qū)域性以不同的方式表示 1000。

//   activationAttributes:    包含一個(gè)或多個(gè)可以參與激活的屬性的數(shù)組。通常為包含單個(gè) System.Runtime.Remoting.Activation.UrlAttribute 對(duì)象的數(shù)組。

System.Runtime.Remoting.Activation.UrlAttribute 指定激活遠(yuǎn)程對(duì)象所需的 URL。有關(guān)客戶端激活的對(duì)象的詳細(xì)說(shuō)明,請(qǐng)參見(jiàn)客戶端激活。

Activator類(lèi)的靜態(tài)方法CreateInstance。

CreateInstance的***個(gè)參數(shù)說(shuō)明是程序集的名稱,為null時(shí)表示當(dāng)前程序集;第二個(gè)參數(shù)說(shuō)明要?jiǎng)?chuàng)建的類(lèi)型名稱。Activator.CreateInstance返回的是一個(gè)ObjectHandle對(duì)象,必須進(jìn)行一次Unwrap()才能返回Object類(lèi)型,進(jìn)而可以強(qiáng)制轉(zhuǎn)換成我們需要的類(lèi)型(本例中是MathClass)。ObjectHandle包含在System.Runtime.Remoting命名空間中,可見(jiàn)它是Remoting相關(guān)的,實(shí)際上ObjectHandle類(lèi)只是一個(gè)對(duì)原類(lèi)型進(jìn)行了一個(gè)包裝以便進(jìn)行封送。

無(wú)參構(gòu)造:

有參構(gòu)造:

動(dòng)態(tài)調(diào)用 :

.使用InvokeMember調(diào)用方法

InvokeMember("方法名", BindingFlags.InvokeMethod, null,對(duì)象實(shí)例,方法參數(shù));

靜態(tài):InvokeMember("方法名", BindingFlags.InvokeMethod, null,'類(lèi)型Type',方法參數(shù));

.MethodInfo.Invoke調(diào)用方法


MethodInfo mi = t.GetMethod("方法名"", BindingFlags.Instance | BindingFlags.Public);

mi.Invoke(對(duì)象實(shí)例, null);

靜態(tài)

MethodInfo mi1 = t.GetMethod("方法名"", BindingFlags.Static | BindingFlags.Public);

Mi1.Invoke(null, 方法參數(shù) );

用反射可以達(dá)到***程度上的多態(tài)

【編輯推薦】

  1. 詳解C#編程中的反射機(jī)制與方法
  2. Java開(kāi)發(fā)中類(lèi)的加載及反射機(jī)制
  3. .NET反射、委托技術(shù)與設(shè)計(jì)模式
責(zé)任編輯:彭凡 來(lái)源: cnblogs
相關(guān)推薦

2021-02-01 14:10:16

JavaClass.forNaClassLoader

2024-09-23 21:00:57

C#反射

2023-09-08 14:48:41

動(dòng)態(tài)共享包HSP

2010-02-04 17:05:53

C++動(dòng)態(tài)創(chuàng)建對(duì)象

2021-03-15 08:18:23

C#反射模塊

2009-10-13 09:05:45

反射機(jī)制

2023-10-17 09:26:44

Java工具

2024-05-27 09:52:57

反射技術(shù).NET動(dòng)態(tài)庫(kù)

2020-04-27 07:28:00

Java反射動(dòng)態(tài)代理

2012-02-08 10:12:19

Java反射

2011-03-29 15:27:26

SQL Server 動(dòng)態(tài)管理

2024-03-18 08:33:16

2009-08-21 08:41:44

C#反射

2013-08-21 16:57:48

.NET反射

2021-03-17 07:49:21

Java對(duì)象內(nèi)存

2010-10-08 10:52:36

JavaScript對(duì)

2011-04-11 09:39:55

對(duì)象實(shí)例

2021-03-11 08:10:48

JVM對(duì)象的創(chuàng)建School

2009-08-10 13:34:11

創(chuàng)建C# COM對(duì)象

2024-01-05 08:22:52

GlanceJetpack插件
點(diǎn)贊
收藏

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