LinqKit有一个用于IEnumerable的扩展方法ForEach,它与System.Collections.Generic.IEnumerable冲突。
Error 4 The call is ambiguous between the following methods or properties:
'LinqKit.Extensions.ForEach<Domain>(System.Collections.Generic.IEnumerable<Domain>, System.Action<Domain>)'
and
'System.Linq.EnumerableExtensionMethods.ForEach<Domain>(System.Collections.Generic.IEnumerable<Domain>, System.Action<Domain>)'我怎样才能摆脱这个错误?
发布于 2011-11-04 04:25:13
在框架中,Enumerable没有为ForEach()声明扩展。这两个参数都来自外部参照。
您应该考虑只使用其中一个-要么是添加EnumerableExtensionMethods的引用,要么是LinqKit。
(顺便说一句,这是使用与框架相同的名称空间会导致问题的原因之一--在本例中,EnumerableExtensionMethods的作者将其放在System.Linq中,这将在您使用LINQ时出现名称空间冲突时引发问题。)
如果你真的需要使用这个方法,那么你必须直接调用它,而不是使用扩展方法,例如:
LinqKit.Extensions.ForEach(collection, action);或者:
System.Linq.EnumerableExtensionMethods.ForEach(collection, action);也就是说,我个人只会使用foreach循环来处理元素。
发布于 2011-11-04 04:25:07
您只需完全限定要调用的方法,如错误消息中所示。
因此,与其使用
ForEach<Domain>( ... );使用
LinqKit.Extensions.ForEach<Domain>( ... );https://stackoverflow.com/questions/8001339
复制相似问题