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>.但它不适合我.
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对你来说足够了,这是一个接口或委托方法,我认为你也可以用协方差来解决这个问题.