[英]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()
聲明擴展。 這兩個都來自外部參考。
您應該考慮僅使用其中一個 - 添加EnumerableExtensionMethods
或LinqKit
。
(這,順便說一下,使用與框架相同的命名空間導致問題的一個原因 - 在這種情況下, 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.