使用Moq时仍需要虚拟方法吗?

时间:2012-11-24 06:09:23

标签: moq virtual-method

我们正在使用Moq,我想知道virtual方法当前的作用是什么 - 在2008年的帖子中,很明显你必须将你的方法标记为虚拟,以便Moq工作(或从接口继承。)

Moq discussion

但是,在.Net 4.5中仍然如此,您需要在要模拟的类中使用virutal方法吗?在围绕静态方法创建包装类时,这也适用 - 包装类要么继承自接口,要么需要将有问题的方法标记为virtual

1 个答案:

答案 0 :(得分:2)

在.NET 4或4.5中没有改变。正如您提供的链接所解释的那样,Moq使用Castle Windsor Dynamic Proxy来生成从您想要模拟的类型派生的类型。因此,标准的继承规则适用。 Moq生成的派生类型只能拦截对任何普通派生类可以覆盖的方法的调用。