gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:44:59 25 4
gpt4 key购买 nike

假设我有一个基类:

public class Base{

}

我有一个继承自基类的派生类:

public class Derived: Base{

}

是否可以为 List<T> 编写扩展方法?仅从基类继承的类的集合,如下所示:

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

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

最佳答案

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

该方法必须是通用的,因为 List<Derived>不是 List<Base> 的子类型(也不是父类(super class)型)。

如果IEnumerable对你来说足够了并且这是一个接口(interface)或委托(delegate)方法我认为你也可以用协变来解决这个问题。

关于c# - 是否可以只为 List<T> 编写扩展方法,其中 T 是从类 K 继承的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33327950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com