为什么所有的屏幕对象方法都需要声明为虚拟?

时间:2017-01-09 15:33:54

标签: c# automated-tests white

我刚刚开始使用白色,在成功完成一些测试后,我正在查看一些来源,以便更好地了解它是如何工作的。

让我感到困惑的第一件事(并一直让我抓狂)是需要让屏幕对象中的所有公共功能都是虚拟的。我已阅读the documentation,并查看了the source,但我无法看到为什么这个要求是强制性的...我只能认为代理强制执行此要求,但它似乎只在字段上运行,并且似乎无法在任何方法上运行......

1 个答案:

答案 0 :(得分:4)

我的猜测是因为怀特正在使用DynamicProxycreate proxy objects。 DynamicProxy的网站指定:

  

您可以使用DynamicProxy为一个或多个接口甚至具体类动态生成轻量级代理(但只会拦截虚拟方法)。

通过将属性和方法标记为虚拟,运行时将调用代理上的方法,而不是调用代理所基于的类上的方法。