2010-03-25 30 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