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

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());

09-11 17:33