首页 > 解决方案 > 在moq回调c#中设置ref参数

问题描述

我正在尝试使用 c# 模拟回调将值设置为 ref 参数。

我的代码是这样的:

    delegate void FooCallback(string p1, string p2, string p3, ref string p4, ref string p5, ref string p6, object p7);

    public void TestMethod()
    {
        var parm1 = string.Empty;
        var parm2 = string.Empty;
        var parm3 = string.Empty;
        var CallbackFunction = new FooCallback((string p1, string p2, string p3, ref string p4, ref string p5, ref string p6, object p7) => p5 = "value");
        SomeServiceMock.Setup(x =>x.Foo(It.IsAny<string>(),
                It.IsAny<string>(), It.IsAny<string>(), ref parm1, ref parm2, ref parm3,
                It.IsAny<object>())).Callback(CallbackFunction);
    }

但是我收到一个编译错误,说回调函数只能获取 Action 类型的参数,并且由于 ref(或者我可以吗?),我不能只使用 Action,所以当 Foo 是时如何更改 p5 的值叫?

我已经尝试了这里的一切

标签: c#moq

解决方案


我设法通过将 Moq 包从 4.2 升级到 4.15 来解决问题


推荐阅读