c# - 后代非泛型类到基泛型类

标签 c# generics inheritance

通常我在将派生对象传递给方法时使用接口(interface)或基类作为参数类型。 例如

Method1(ICar car);
Method2(BaseClass derivedClass);

但是当子类不是泛型时,泛型基类怎么办?

public class GenericBaseClass<T> where T : BaseClass
{}

public class GenericDerivedClass1 : GenericBaseClass<DerivedClass1>
{}

我可以这样写

Method3(GenericBaseClass<BaseClass> class);

但我不能将 GenericDerivedClass1 类型的对象传递给此方法。

有什么方法可以将我的后代传递给这个方法吗?

最佳答案

您需要使您的 Method3 通用:

private void Method3<T>(GenericBaseClass<T> baseClass)
{

}

然后你可以这样调用它:

Method3(new GenericDerivedClass1());

关于c# - 后代非泛型类到基泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1969891/

相关文章:

c# - 这段代码是合适的 MVC 架构吗?

c# - OxyPlot 实时数据系列绘图中的自动滚动/ Pane

c# - 泛型方法类型参数的类型推断

python - 使用通用 View 时模板不存在

C++ 模板数组类 : Error generation depends on whether it inherits an interface or not

javascript - 使用额外的方法和语法糖扩展 Javascript 数组

c# - 如何避免从接口(interface)到类的转换

generics - 使用宏编写 const 泛型枚举组合

java - ORM 在 JPA 中同时使用两种策略映射继承?

c# - 单元测试项目坚持要求引用 EntityFramework