c# – 模拟具有不同签名的方法,其中一个具有Object作为参数类型

c# – 模拟具有不同签名的方法,其中一个具有Object作为参数类型,第1张

概述我有以下接口 public interface IInfo{ bool IsCompatibleWith (Object informationObject);}public interface IInfo<T> : IInfo{ bool IsCompatibleWith (T informationObject);} 并尝试做以下模拟 Foo f = new Foo 我有以下接口

public interface IInfo{    bool IsCompatibleWith (Object informationObject);}public interface IInfo<T> : IInfo{    bool IsCompatibleWith (T informationObject);}

并尝试做以下模拟

Foo f = new Foo();Mock<IInfo<Foo>> infoMock = new Mock<IInfo<Foo>>();infoMock.Setup(i => i.IsCompatibleWith(f)).Returns(true);

然后测试运行以下行

IInfo mockedInfo;mockedInfo.IsCompatibleWith(f);

问题是,Setup方法设置IsCompatibleWith(T informationObject),而代码调用IsCompatibleWith(Object informationObject).如何设置两个签名

解决方法 以下代码段显示了配置这两种方法的方法:

//configure the method with the `object` as a parameterinfoMock.Setup(i => i.IsCompatibleWith((object)f)).Returns(true);//configure the method with the `IModel` as a parameterinfoMock.Setup(i => i.IsCompatibleWith(f)).Returns(true);

Moq按原样记录参数.将实例强制转换为object时,方法bool IsCompatibleWith(Object informationObject)将接受注册

总结

以上是内存溢出为你收集整理的c# – 模拟具有不同签名的方法,其中一个具有Object作为参数类型全部内容,希望文章能够帮你解决c# – 模拟具有不同签名的方法,其中一个具有Object作为参数类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1219617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存