反射 基於反射的簡單工廠

2022-04-03 17:28:01 字數 2038 閱讀 7838

得到type的幾種方法

1.0通過typeof方法得到type

type t1 = typeof(form1);

2.0根據物件得到type

person p = new person();

type t2 = p.gettype();

3.0根據程式集得到對應的type

assembly ass = assembly.load("lib");

type t3 = ass.gettype("lib.grilfriend");

4.0得到當前程式集的所有type

type t4s = ass.gettypes();

5.0得到當前程式集中所有公共的type

type t5s = ass.getexportedtypes();

反射建立物件兩種方式

1.0這兩種方式建立物件,類中必須要有無引數的建構函式

得到執行的程式集

assembly ass = assembly.load("lib");

通過程式集來建立

object obj1 = ass.createinstance("lib.grilfriend");

通過activator來建立物件

//得到類對應的type

type type = ass.gettype("lib.grilfriend");

object obj2 = activator.createinstance(type);

2.0如何建立類中沒有無參的建構函式的類的物件

得到執行的程式集

assembly ass = assembly.load("lib");

//得到類對應的type

type type = ass.gettype("lib.grilfriend");

//得到當前類中的建構函式

constructorinfo cinfo = type.getconstructor(new type );

//執行建構函式

object obj3 = cinfo.invoke(new object );

使用反射實現記事本熱插拔外掛程式。乙個主記事本程式,我來規定介面,別人開發

外掛程式,擺放到規定的資料夾位置

利用反射呼叫其中的方法來實現 大小寫切換功能。

介面規定了該外掛程式功能名稱和外掛程式功能。。。。乙個唯讀屬性乙個大小寫轉換方法

1

using

system;

2using

system.collections.generic;

3using

system.componentmodel;

4using

system.data;

5using

system.drawing;

6using

system.linq;

7using

system.text;

8using

system.windows.forms;910

namespace

記事本11

1920

private

void form1_load(object

sender, eventargs e)

2154}55

}56}57

}58}59

60void stmi_click(object

sender, eventargs e)

61);

67//

建立物件

68object obj =activator.createinstance(type);

69//

執行方法

70object str = methinfo.invoke(obj, new

object

);71

//返回值賦回

72 textbox1.text =str.tostring();

7374}75

}76 }

反射實現熱插拔外掛程式

反射實現簡單工廠模式

傳統的簡單工廠模式缺點是 缺點 由於工廠類集中了所有例項的建立邏輯,這就直接導致一旦這個工廠出了問題,所有的客戶端都會受到牽連 這樣一來,但產品的種類增加的時候,即有不同的產品介面或者抽象類的時候,工廠類就需要判斷何時建立何種種類的產品,這就和建立何種種類產品的產品相互混淆在了一起,違背了單一職責,...

定義簡單的反射工廠示例

首先,定義乙個水果抽象類,如下 class fruit 然後,例項化幾個水果類,如下 class banana fruit class orange fruit class public newvoid eating public override void eating 最後,建立水果工廠,如下 ...

定義簡單的反射工廠示例

首先,定義乙個水果抽象類,如下 class fruit 然後,例項化幾個水果類,如下 class banana fruit class orange fruit public override void eating 最後,建立水果工廠,如下 水果工廠 class fruitfactory else...