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

C# 二维对象数组返回类型-NSubstitute,c#,.net,tdd,nunit,nsubstitute,C#,.net,Tdd,Nunit,Nsubstitute,我得到一个演员特例 System.InvalidCastException:无法将“System.object[]”类型的对象强制转换为“System.object[,]”类型。 在Castle.Proxies.ITestProxy.Get2DArray()中 TestTest.cs中的Scratch.TestFixture.Get2DArray()第17行 从以下内容: [TestFixture] public class TestFixture { [Test] public

我得到一个演员特例

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();
}
[TestFixture]
公共类测试夹具
{
[测试]
public void Get2DArray()
{
Substitute.For().Get2DArray().Returns(新对象[1,1]);
}
}
公共接口测试
{
对象[,]Get2DArray();
}

有人能解释一下吗?我认为这是一个bug?

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

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


请注意,我个人正在开发一个不使用Reflection.Emit(也不使用Castle)的模拟框架,甚至在Alpha准备就绪之前都需要几周的时间,但它是一个非常强大的工具。有很多我不知道的情况(我的网站会列出这些)。如果您感兴趣,请遵循

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

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


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

您使用的是哪个版本的NSubstitute?我现在不在工作站,因此无法检查,但是如果有帮助的话,我今天下午通过NuGet安装了。@MyResmcDonnell:MS声称在.NET 4中修复了SRE错误。我针对.NET 4.0版本的NSubstitute进行了测试,但仍然失败。也许NSubstitute 4.0正在链接到Castle的一个版本,该版本链接到3.5。顺便说一句,@leppie,你有这个声明的链接吗?@payo:他们在connect网站上是这么说的。对不起,我手头没有链接。