【发布时间】:2015-02-26 14:06:57
【问题描述】:
我在重载扩展方法时遇到问题。
我有两种扩展方法:
方法 A - 对于标准对象:
public static bool HasChanged<T>(this T obj1, T obj2, Func<T, T, bool> equalityExpression)
方法 B - 对于 IEnumerables:
public static bool HasChangedList<T>(this IEnumerable<T> obj1, IEnumerable<T> obj2, Func<T, T, bool> isEqualExpression)
但我想给它们两个相同的名称,这目前不起作用,因为 IEnumerables 也是对象,因此编译器无法决定是在 IEnumerable 上使用第一个还是第二个。
我确定,不可能让第一个方法获取除 IEnumerable 之外的所有对象,那么还有其他方法吗?
【问题讨论】:
-
你可以检查第一个的主体,如果它是 IEnumerable 并调用第二个私有方法,那么你只需要一个。
-
在两种方法上分配相同的名称对我来说效果很好。
-
你说目前不工作。那是什么意思?你得到什么错误?或意外行为或什么?
-
很抱歉,我认为犯了一个错误,它确实有效,Visual Studios IntelliSense 让我认为它不起作用。
标签: c# extension-methods