簡體   English   中英

C#模糊擴展方法

[英]C# ambiguous extension methods

LinqKit有一個擴展方法ForEach for 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>)'

我怎樣才能擺脫這個錯誤?

在框架中, 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>( ... );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM