我收到一个类型转换异常

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 依赖于 CaSTLe,而 CaSTLe 依赖于 Reflection.Emit,所以他们归咎于 Reflection.Emit。

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

对于您的问题的解决方法,看起来您不能使用多维数组。请注意,您的异常实际上发生在 Get2DArray() 上,而不是 Returns 上。

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

关于c# - 二维对象数组返回类型 - NSubstitute,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9912368/

10-13 06:26