簡體   English   中英

二維對象數組返回類型 - NSubstitute

[英]Two dimensional object array return type - NSubstitute

我得到了一個演員異常

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,它取決於Reflection.Emit,所以他們責怪Reflection.Emit。

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

要解決您的問題,看起來您不能使用多維數組。 請注意,您的異常實際上發生在Get2DArray() ,而不是Returns

請注意,我個人正在研究一個不使用Reflection.Emit(也不是Castle)的模擬框架。即使Alpha准備就緒也需要幾周時間,但它是一個非常強大的工具。 城堡失敗有很多場景,我沒有(我的網站會列出這些)。 如果您有興趣,請訪問http://smug.codeplex.com

這可能有點晚,但可以幫助遇到此問題並遇到此問題的人。

我們通過讓您的接口返回Array而不是object[,]來找到解決此限制的方法。

存在隱式轉換,因此接口實現中的代碼應該能夠保持不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM