与c#中的泛型版本相比,更喜欢方法的非泛型版本



我正试图使用JustLock来存根一个NHibernate ICriteria。

特别是,我正在尝试截断列表<>方法(当使用对象数组调用时):

var mockCriteria = Mock.Create<ICriteria>();
Mock.Arrange(() => mockCriteria.List<object[]>()).Returns(
    new object[]
    {
        new object[] {"CompanyX", 1, 1, 1, 0}, 
        new object[] {"CompanyX", 1, 1, 1, 0}, 
        new object[] {"CompanyY", 2, 1, 1, 0}
    });

当我执行第二行(排列)时,我得到了错误:

System.InvalidOperationExceptionSystem.Collections.IList List() is not a GenericMethodDefinition. MakeGenericMethod may only be called on a method for which MethodBase.IsGenericMethodDefinition is true.
   at System.Reflection.RuntimeMethodInfo.MakeGenericMethod(Type[] methodInstantiation)
   at x7x5x2.x8x2.x3x15x2(Type x8, MethodBase , BindingFlags x1CxFx2)   at x6x2.x6x2.Create(Object , MethodInfo x6, Boolean x6x2)   at x7x5x2.x11x14x2.x11x13x2(xFx2 x5xF)   at Telerik.JustMock.Mock.x1F.x15x2(x11x14x2 x2)   at x7x5x2.x5x14x2.x1C[x4x14x2,x5x2](xFx2 xFx2, Func`2 x3x14x2)   atThreshold.DeviceManagerGateway.UnitTests.Queries.DeviceNetworkStatusQueryFacts.RetrieveDevicesAsDeviceNetworkStats() in DeviceNetworkStatusQueryFacts.cs: line 24

ICriteria同时具有List()List<T>()方法,并且看起来编译器正在获取List方法的非泛型版本而不是泛型版本。假设我是正确的,并且它使用了错误版本的List方法,有人知道如何强制执行吗?或者,如果这是一个不同的问题,有人能告诉我如何解决吗?

我在最近版本的JustLock中尝试过,但没有出现问题。

从混淆的存在来看,你似乎在使用一个相当旧的版本。

您可以从NuGet或Telerik帐户下载最新版本的JustLock。

最新更新