You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中模拟函数委托返回Null响应:解决调用歧义问题

解决Moq模拟返回Null时的调用歧义问题

你遇到的歧义问题是因为编译器无法推断ReturnsAsync(null)里的null对应哪种泛型类型,毕竟Number是泛型参数,得明确告诉编译器具体类型。

有几种简单的解决方式:

方式一:显式转换null为指定泛型类型

直接把null强制转换成Number类型,让编译器明确返回类型:

functionMock.Setup(x => x.Invoke()).ReturnsAsync((Number)null);

方式二:用Task.FromResult指定泛型参数

通过Task.FromResult显式声明泛型类型,再把这个任务返回:

functionMock.Setup(x => x.Invoke()).Returns(() => Task.FromResult<Number>(null));

方式三:使用default关键字(针对值类型场景)

如果Number是可空值类型(比如int?),也可以用default来生成可空的默认值,同样能避免歧义:

functionMock.Setup(x => x.Invoke()).ReturnsAsync(default(Number));

这几种方式都能让编译器明确返回的泛型类型,解决调用歧义的问题。

内容的提问来源于stack exchange,提问作者DannyD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 12:25:21