我编写了一些扩展方法,可以将IEnumerable和IList转换为字符串。由于IList继承自IEnumerable,所以我必须给它们命名不同的名称。
我想知道是否有一种方法可以避免这种情况?我可以在IEnumerable上有一个扩展方法,然后在IList上有一个相同名称和相同签名的不同扩展方法吗?有点像覆盖,只是扩展方法当然是静态的。
我只想在列表上使用更有效的方法体,而不必使用第二个方法名称。
是的,我知道在这种特定情况下,我应该先运行分析器,以便真正看到第二种方法是否更好,但我想知道是否通常可能在派生类中覆盖扩展方法。
我想知道是否有一种方法可以避免这种情况?我可以在IEnumerable上有一个扩展方法,然后在IList上有一个相同名称和相同签名的不同扩展方法吗?有点像覆盖,只是扩展方法当然是静态的。
我只想在列表上使用更有效的方法体,而不必使用第二个方法名称。
是的,我知道在这种特定情况下,我应该先运行分析器,以便真正看到第二种方法是否更好,但我想知道是否通常可能在派生类中覆盖扩展方法。
Enumerable.Count()
这个方法的作用就是检查是否有ICollection<T>
接口,如果有就使用.Count
作为一个快捷方式。 - Marc Gravell