gpt4 book ai didi

c# - 如何为 `in` 参数修饰符设置起订量回调?

转载 作者:行者123 更新时间:2023-12-04 03:51:49 25 4
gpt4 key购买 nike

您如何为带有 in parameter modifier 的方法设置 Moq 设置回调?
说你有这个:

public interface ITester
{
bool IsGood(in int value);
}
这不起作用:
var mock = new Mock<ITester>();
mock.Setup(m => m.IsGood(It.IsAny<int>()))
.Callback<int>(v => { /* whatever */ }); // ==> runtime error

mock.Object.IsGood(42);
您会收到以下异常:
System.ArgumentException : Invalid callback. Setup on method with parameters (in int) cannot invoke callback with parameters (int).
什么是正确的方法(除了完全删除 in 修饰符;))?

最佳答案

一种可能的解决方案是定义具有相似签名(匹配输入参数)的 delegate 并在回调中使用它 + 在设置中使用 It.Ref<int>.IsAny:

public delegate void MyDelegate(in int value);
var d = new MyDelegate((in int a) => { Console.WriteLine($"Number {a}"); });

var mock = new Mock<ITester>();
mock.Setup(m => m.IsGood(It.Ref<int>.IsAny)).Callback(d);

mock.Object.IsGood(42); //Number 42

关于c# - 如何为 `in` 参数修饰符设置起订量回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64343368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com