2010-08-12 56 views
0

我想從我的嘲弄的對象調用一個事件。我這樣做:犀牛嘲諷與ref參數事件

importObject.Raise(x => x.RequestImportLevel += null, false, false, true, importLevel); 

需要通過引用傳遞的最後一個參數。所以,我得到一個異常

參數#4是System.Int16但 應System.Int16 &

我能做些什麼來處理呢?

如果問題出在Rhino Mocks上 - 有沒有其他框架可以乾淨地支持這個開箱即用的功能?

+0

任何方式來改變事件不需要ref參數?具有讀/寫屬性的專用EventArgs可以輕鬆替換ref參數。 – PatrickSteele 2010-08-12 12:24:23

+0

不幸的是,沒有。 實際上,這是來自傳統COM組件的事件,並且無法將其更改爲EventArgs – Shaddix 2010-08-13 03:26:19

回答

0

這個對象實現的接口,所以我剛剛創建了一個虛擬類,讓它從IEventWithRefParameter繼承並推出像

public virtual void RaiseRequestImportLevelEvent(bool hasYc, bool hasWc, bool hasDc, ref short chosenLevel) 
    { 
     if (RequestImportLevel != null) 
     { 
      RequestImportLevel(hasYc, hasWc, hasDc, ref chosenLevel); 
     } 
    } 

功能現在,我使用這個虛擬類的一個實例在我的測試中和當我想提出一個事件時,我只是調用這個函數。

幾乎沒有一個乾淨的解決方案,但至少它有訣竅。