二维对象数组返回类型-NSubstitute

本文关键字:数组 返回类型 -NSubstitute 对象 二维 | 更新日期: 2023-09-27 18:29:22

我得到一个转换异常

System.InvalidCastException:无法将"System.object[]"类型的对象强制转换为"System.object[,]"类型。位于Castle.Proxies.ITestProxy.Get2DArray()在TestTest.cs中的Scratch.TestFixture.Get2DArray():第17行

来自以下内容:

[TestFixture]
public class TestFixture
{
    [Test]
    public void Get2DArray()
    {
        Substitute.For<ITest>().Get2DArray().Returns(new object[1,1]);
    }
}
public interface ITest
{
    object[,] Get2DArray();
}

有人能解释一下吗?我想这是NSubstitute漏洞?

二维对象数组返回类型-NSubstitute

NSubstitute依赖于Castle,Castle依赖于Reflection.Emit,所以他们指责Reflection.Emit.

http://issues.castleproject.org/issue/DYNPROXY-154

为了解决您的问题,您似乎无法使用多维数组。请注意,您的异常实际上发生在Get2DArray()上,而不是Returns上。

请注意,我个人正在开发一个不使用Reflection.Emit(也不使用Castle)的嘲讽框架。即使是Alpha也需要几周的时间才能准备好,但它是一个非常强大的工具。有很多场景Castle失败了,我没有(我的网站会列出这些)。如果你感兴趣,请关注http://smug.codeplex.com

这可能有点晚,但可以帮助遇到此问题并遇到此问题的人。

我们找到了绕过这个限制的方法,让您的接口返回Array而不是object[,]

有一个隐式转换,因此接口实现中的代码应该能够保持不变。