我收到一个类型转换异常
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/