今天改bug碰到了一個問題,有多個方法注冊到了一個事件裡去,而這些方法本身又有點兒互斥,因而造成了bug,哥調試半天才發現,郁悶至極,遂復習了以前的知識並進行適當延伸,再將成果記錄及分享之,以防他日再犯。
顯然這是一個委托鏈,那麼首先就來回顧下委托鏈的最初寫法了,這裡引用上一篇 委托的N種寫法,你喜歡哪種? 的部分代碼。
定義委托:
PlusStringHandle( x, y);
plusString( x, x +
PlusStringHandle handle = +=+= str = handle(, , handle.Method.Name);
PlusStringHandle handle = +=+=+=-=-= str = handle(, , handle.Method.Name);
繼續修改Main方法:
PlusStringHandle handle = +=+=+= handle = testString; str = handle(, , handle.Method.Name);
=======================分割線 =============================
以下繼續來探討下委托鏈獲取的返回值,如上文所寫,直接調用委托只能獲取最後一次注冊的方法的返回值,那麼假如說要獲取所有已注冊的方法的返回值則有兩種方式:
PlusStringHandle handle = +=+=+= str = handle(, = (PlusStringHandle d , d.Method.Name, d(, (Delegate d Console.WriteLine(, d.Method.Name, d.DynamicInvoke(,