C#模糊扩展方法

Can*_*hiu 14 c# extension-methods

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>)'
Run Code Online (Sandbox Code Playgroud)

我怎样才能摆脱这个错误?

Ree*_*sey 22

Enumerable在框架中,没有声明扩展名ForEach().这两个都来自外部参考.

你应该考虑只使用其中一个 - 要么是添加的参考,EnumerableExtensionMethods要么是LinqKit.

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

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

LinqKit.Extensions.ForEach(collection, action);
Run Code Online (Sandbox Code Playgroud)

要么:

System.Linq.EnumerableExtensionMethods.ForEach(collection, action);
Run Code Online (Sandbox Code Playgroud)

话虽这么说,我个人只是使​​用foreach循环来处理元素.