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

时间:2015-10-25 09:05:48

标签: c# inheritance extension-methods

假设我有一个基类:

public class Base{

}

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

public class Derived: Base{

}

是否可以为List<T>类编写一个仅从Base类继承的扩展方法,如下所示:

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

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

1 个答案:

答案 0 :(得分:9)

Action

该方法必须是通用的,因为public static string F<T>(this List<T> baseClass) where T : Base { return "This class inherits from Base Class"; } 不是List<Derived>的子类型(也不是超类型)。

如果List<Base>足够这是一个接口或委托方法,我认为你也可以用协方差来解决这个问题。