定義簡單的反射工廠示例

2021-09-22 06:15:39 字數 1828 閱讀 3926

首先,定義乙個水果抽象類,**如下:

class fruit

}

然後,例項化幾個水果類,**如下:

class banana : fruit

}

class orange : fruit

}

//public override void eating()//}

最後,建立水果工廠,**如下:

//水果工廠

class fruitfactory

//else if ("banana" == _fruitname)

////

else if ("orange" == _fruitname)

////

else

////

獲得當前程式的命名空間

string strnamespace = assembly.getexecutingassembly().getname().name;

//呼叫方法一:使用 type 類

////

constructorinfo ctorinfo = type.getconstructor(system.type.emptytypes);

//// invoke()方法:返回與建構函式關聯的類的例項。

//fruit fruita = (fruit)ctorinfo.invoke(new object[0]);

//return fruita;

//呼叫方法二:使用 assembly 類

//assembly myassembly = assembly.getexecutingassembly();

////

return fruitb;

//呼叫方法三:使用 activator 類

fruit fruitc = (fruit)activator.createinstance(type.gettype(

"" + _fruitname,

false,

true));

return fruitc;}}

測試**如下:

class program

}

利用反射建立例項物件的常用三種方式:

// 方式一:使用 type 類

type type = type.gettype(

"" + _fruitname);

constructorinfo ctorinfo = type.getconstructor(system.type.emptytypes);

//invoke()方法:返回與建構函式關聯的類的例項。

fruit fruita = (fruit)ctorinfo.invoke(

newobject[

0]);

return fruita;

// 方式二:使用 assembly 類

assembly myassembly = assembly.getexecutingassembly();

fruit fruitb = (fruit)myassembly.createinstance(

"" + _fruitname);

return fruitb;

// 方式三:使用 activator 類

fruit fruitc = (fruit)activator.createinstance(type.gettype(

"" + _fruitname,

false,

true));

return fruitc;

示例的全部**如下:

定義簡單的反射工廠示例

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

反射 基於反射的簡單工廠

得到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 ...

關於反射的簡單示例

先寫乙個從字串生成任何型別的物件的函式 public object stringtoobject string str,type objecttype 傳遞兩個引數,乙個是字串含有每個屬性的屬性名和值對,屬性和值用冒號分隔,屬性與屬性用逗號分隔,另乙個引數是要建立的物件的型別 將字串分解成 屬性 值...