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
.
有没有办法如何将我的后代类传递给这个方法?
您需要使Method3成为通用的:
private void Method3<T>(GenericBaseClass<T> baseClass)
{
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样调用它:
Method3(new GenericDerivedClass1());
Run Code Online (Sandbox Code Playgroud)