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