委託應用例項

2022-01-31 08:53:31 字數 1265 閱讀 5904

需求:根據傳入的action引數,自動構造與之對應的request。

直接上**。

先定義乙個myrequest類。下有子類:addrequest,loadrequest,deleterequest。

myrequest

1

public

class

myrequest24

//public gridpagerparams pager 56

public

myrequest()710

public

virtual

string

msg()

1114

}

myrequest定義了乙個虛方法 msg();

各個子類由於演算法不同,可重寫該方法。

下面是關鍵:myrequestcreator

myrequestcreator 負責判斷引數action,並返回相應的 request.

myrequestcreator

public

class

myrequestcreator

));_creatordict.add(

"add",

newmyrequestcreator._newmytype(

delegate

() ));

//_creatordict.add(

"delete",

newmyrequestcreator._newmytype(

delegate

() ));

}public

static

myrequest createhandler(

string

action)

catch

(exception e)

}return

null;}

}

客戶端呼叫時:

myrequest request = myrequestcreator.createhandler("load");

這樣就可以生成myrequest的具體子類,並以myrequest方式使用它的功能。

整個過程完全沒有if或者case,配合emit還可以實現動態增加myrequest的子類並註冊到myrequestcreator中去。

更重要的是,使用這種方式,比根據activator.createinstance(typeof(myrequest));產生的物件要快的多,接近於直接使用new object()的方式。

C 委託 應用例項

用一句話解釋委託 委託是一種可以把引用儲存為函式的型別。有些類似spring框架對於介面的用法,向action中注入service物件。action並不知道呼叫哪個服務層,只有容器通過配置檔案 向action注入service物件後,action才能知道呼叫的是哪個實現的服務層物件。你傳入的是那個實...

委託例項(delegate例項 事件委託通知)

delegate例項 delegate是c 中的一種型別,它實際上是乙個能夠持有對某個方法的引用的類。與其它的類不同,delegate類能夠擁有乙個簽名 signature 並且它只能持有與它的簽名相匹配的方法的引用。它所實現的功能與c c 中的函式指標十分相似。它允許你傳遞乙個類a的方法m 給另乙...

委託例項化

新建立的委託例項將引用以下各項中的乙個 委託建立表示式中引用的靜態方法。委託建立表示式中引用的目標物件 此物件不能為null 和例項方法。另乙個委託。例如 delegate void d int x class c public void m2 int i class test 委託例項一旦被例項化...