4th*_*ace 0 .net c# microsoft-fakes
如果一个类没有接口,我可以使用存根吗?
我正在尝试存根类的方法。该类没有接口。该类在 Fakes intellisense 中显示为存根。该方法也在那里,但是当我尝试模拟该方法时,出现设计时错误:
Cannot assign to 'MyMethod' because it is a 'method group'
Run Code Online (Sandbox Code Playgroud)
代码
StubClassA classAStub = new StubClassA();
classAStub.MyMethod = (paramA, paramB) => {return 10;};
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为该类没有接口吗?如果是这种情况,为什么还要生成存根呢?
我唯一的选择是使用垫片吗?
Fakes 为程序集中的每个未密封的类创建存根,并为每个可以重写的方法创建存根。存根纯粹基于继承,不涉及任何魔法。如果MyMethod能够被存根,它将显示为名为 的委托属性MyMethodParamType1ParamType2。
如果您想覆盖普通代码无法覆盖的内容,则需要填充程序。Shims 使用某种晦涩的魔法在运行时修改 IL 并用委托替换方法。一般来说,它们的使用意味着您的代码中可能存在弱点,但无论如何对您来说可能没问题。
如果类型确实需要独立于它的契约(您的问题所暗示的),我个人建议使用接口。
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |