2010-03-25 16 views
3

我有一個VB9和Moq的問題。Wrap Sub作爲函數在Lambda中使用

我需要調用Sub上的驗證。像這樣:

logger.Verify(Function(x) x.Log, Times.AtLeastOnce) 

我的記錄是這樣的:

Public Interface ILogger 
    Sub Log() 
End Interface 

但隨着VB這是不可能的,因爲日誌的方法是一個Sub,從而不產生價值。

我不想將該方法更改爲函數。

什麼是解決這個限制的最簡潔的方法,是否有任何方式來包裝Sub作爲一個函數像下面?範圍

拉姆達參數不

回答

1

VB10允許黏巴達替補的使用:

logger.Verify(Function(x) ToFunc(AddressOf x.Log), Times.AtLeastOnce) 

我已經試過這一點,但我得到。

您是否嘗試過一個簡單的包裝,如:

Public Function Wrapper(source as Action) as Boolean 
    source.Invoke() 
    Return True 
End Function 
-1

2010年,如果其子,而不是一個功能只是附屬功能替換。

logger.Verify((X)x.Log,Times.AtLeastOnce)

+0

我知道這在技術上並沒有回答這個問題,但我用的是2010年偶然發現了這一點,所以後,我找到了回答我回來發佈它 – 2011-03-17 20:31:48