扩展方法之间的模拟方法调用
我已经通过nuget包下载了DynamicLinq库。我用它如下扩展方法之间的模拟方法调用
db.ReservationSet.Where("blbalbabla",1,2)
但我得到异常。
错误38的呼叫是以下方法或 属性之间暧昧: 'System.Linq.Dynamic.DynamicQueryable.Where(System.Linq.IQueryable, 串,params对象[])' 和 ' System.Linq.Dynamic.DynamicQueryable.Where(System.Linq.IQueryable, 串,则params 对象[])” F:\项目\ IEKeysNew \ IEKEYS \控制器\ ReportController.cs 145 22 IEKEYS
这里是两种方法的标志。
public static IQueryable<T> Where<T>(this IQueryable<T> source, string predicate, params object[] values);
public static IQueryable Where(this IQueryable source, string predicate, params object[] values);
我无法找到某些东西来摆脱这种编译时异常。
不幸的是另一个第三方.dll库包含相同的动态linq库内部。 Trirand的jQGrid库包含动态linq库,这是导入System.Linq.Dynamic库时发生冲突的原因。
你是如何解决这个问题的? – Cody 2015-05-18 19:39:25
从您的代码中使用下列内容:
using System.Linq;
不,它不会像预期的那样影响结果,因为来自相同库方法的冲突。 – Freshblood 2012-07-24 11:50:36
我不认为这不是问题。 'Enumerable.Where'具有另一个类型签名,并且错误消息甚至没有提及'System.Linq.Enumerable'。 – sloth 2012-07-24 11:52:41
@新鲜血液:尝试重建您的项目。 – 2012-07-24 11:54:09
不db.ReservationSet
有哪些类型?
如果是您的MyClass
实例的集合,那么请尝试编写db.ReservationSet.Where<MyClass>("blbalbabla",1,2)
。
如果是分配给IQueryable
然后尝试写:((IQueryable)db.ReservationSet).Where("blbalbabla",1,2)
我已经尝试过,但检查我的答案我发现问题。 – Freshblood 2012-07-24 11:56:44
我知道这是不是最漂亮的方式。但我没有其他想法。
将您的课堂拆分为2个cs文件并创建部分课程。所以你从其中一个文件中删除使用System.Linq
。 试试看,也许它有效。
It0s在同一个方法(它不考虑异常中的通用位置)之间给出了一个ambigous异常。有时候会发生在我身上,尝试清理解决方案并重新构建。 – 2012-07-24 11:51:48