c#模糊扩展方法

本文关键字:方法 扩展 模糊 | 更新日期: 2023-09-27 18:13:38

LinqKit为IEnumerable提供了一个与System.Collections.Generic.IEnumerable冲突的扩展方法ForEach

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>)'

我怎样才能消除这个错误?

c#模糊扩展方法

Enumerable在框架中没有为ForEach()声明扩展。这两个都来自外部引用。

您应该考虑只使用其中一个—添加EnumerableExtensionMethodsLinqKit的引用。

(顺便说一句,这是使用与框架相同的命名空间导致问题的一个原因-在这种情况下,EnumerableExtensionMethods的作者将其放在System.Linq中,这将导致任何时候使用Linq并且您有命名空间冲突的问题。)

如果你真的需要使用这个方法,那么你必须直接调用它,而不是使用扩展方法,例如:

LinqKit.Extensions.ForEach(collection, action);

或:

System.Linq.EnumerableExtensionMethods.ForEach(collection, action);

话虽如此,我个人还是会使用foreach循环来处理元素

您只需要完全限定您正在调用的方法,如错误消息中所示。

所以,不用

ForEach<Domain>( ... );
使用

LinqKit.Extensions.ForEach<Domain>( ... );