我得到了施法异常
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错误?
答案 0 :(得分:4)
NSubstitute依赖于Castle,它取决于Reflection.Emit,所以他们责怪Reflection.Emit。
http://issues.castleproject.org/issue/DYNPROXY-154
对于您的问题的解决方法,看起来您不能使用多维数组。请注意,您的例外实际上发生在Get2DArray()
上,而不是Returns
。
请注意,我个人正在研究一个不使用Reflection.Emit(也不是Castle)的模拟框架。即使Alpha准备就绪也需要几周的时间,但它非常强大工具。城堡失败有很多场景,我没有(我的网站会列出这些)。如果您有兴趣,请关注http://smug.codeplex.com
答案 1 :(得分:0)
这可能有点晚了,但可以帮助遇到此问题并遇到此问题的人。
我们通过让您的界面返回Array
而不是object[,]
找到解决此限制的方法。
存在隐式转换,因此接口实现中的代码应该能够保持不变。