后代非泛型类进入Base泛类

use*_*348 3 c# generics inheritance

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

Method1(ICar car);
Method2(BaseClass derivedClass);
Run Code Online (Sandbox Code Playgroud)

但是当后代类不是通用的时,通用基类呢?

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

public class GenericDerivedClass1 : GenericBaseClass<DerivedClass1>
{}
Run Code Online (Sandbox Code Playgroud)

我可以写类似的东西

Method3(GenericBaseClass<BaseClass> class);
Run Code Online (Sandbox Code Playgroud)

但我无法将此方法传递给类型的对象GenericDerivedClass1.

有没有办法如何将我的后代类传递给这个方法?

BFr*_*ree 5

您需要使Method3成为通用的:

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

}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样调用它:

Method3(new GenericDerivedClass1());
Run Code Online (Sandbox Code Playgroud)