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