LinqKit的ForEach
扩展程序IEnumerable
与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>)'
如何摆脱这个错误?
答案 0 :(得分:22)
Enumerable
未声明ForEach()
的扩展名。这两个都来自外部参考。
您应该只考虑使用其中之一 - 添加EnumerableExtensionMethods
或LinqKit
的引用。
(这,顺便说一句,使用与框架相同的命名空间导致问题的一个原因 - 在这种情况下,EnumerableExtensionMethods
的作者将其放在System.Linq
中,这将导致问题任何时候你使用Linq并且你有命名空间冲突。)
如果你真的需要使用这种方法,那么你必须直接调用它而不是使用扩展方法,即:
LinqKit.Extensions.ForEach(collection, action);
或者:
System.Linq.EnumerableExtensionMethods.ForEach(collection, action);
话虽如此,我个人只会使用foreach循环来处理元素。
答案 1 :(得分:0)
您只需要完全限定您正在调用的方法,如错误消息中所示。
所以,而不是使用
ForEach<Domain>( ... );
使用
LinqKit.Extensions.ForEach<Domain>( ... );