是否可以只为List <T>编写扩展方法,其中T是从类K继承的类

Str*_*los 3 c# inheritance extension-methods

假设我有一个基类:

public class Base{

}
Run Code Online (Sandbox Code Playgroud)

我有一个继承自Base Class的类Derived:

public class Derived: Base{

}
Run Code Online (Sandbox Code Playgroud)

是否有可能为List<T>类继承一个只从Base类继承的扩展方法,如下所示:

public static string F(this List<Base> baseClass){
    return "This class inherits from Base Class";
}
Run Code Online (Sandbox Code Playgroud)

扩展方法应该适用于List<Base>List<Derived>.但它不适合我.

usr*_*usr 9

public static string F<T>(this List<T> baseClass)
  where T : Base
{
    return "This class inherits from Base Class";
}
Run Code Online (Sandbox Code Playgroud)

该方法必须是通用的,因为List<Derived>它不是List<Base>(也不是超类型)的子类型.

如果IEnumerable对你来说足够了,这是一个接口或委托方法,我认为你也可以用协方差来解决这个问题.