我試圖重寫我的實體具有以下擴展方法都在哪裏()方法:曖昧的IQueryable <T>。凡和IEnumerable <T>。凡在擴展方法
public static IQueryable<T> Where<T>(this IQueryable<T> source, Expression<Func<T, bool>> predicate)
{
throw new SecurityException("Use the security SafeWhere method");
}
但是當我使用上下文。 EntitiesX.Where()我得到的錯誤:電話是可查詢的<TSource>(IQueryable的<TSource>,表達< Func鍵< TSource之間的曖昧,布爾> >)和可數<TSource>(IEnumerable的<TSource>,表達< Func鍵< TSource,布爾> >)
我怎樣才能解決呢?此外,我希望該擴展方法隻影響實現某些接口的實體,我試圖通過指定接口類型,而不是通用的T但這不起作用。
解決的一個辦法就是不要把它寫成擴展方法。把它寫成這樣的靜態方法'YourClass.Where(context.EntitiesX,....)' –
我想確保無處可用基地在哪裏使用 – ferflores
你不能覆蓋擴展方法。對於編譯器來說,它們與靜態方法完全相同,當您有兩個具有相同簽名的方法時,這會導致不明確。 –