强制 Type 变量为特定基础 class 类型

Enforce Type variable to be of a specific base class type

具有以下代码:

class Car{}
class WV : Car{}
class BMW: Car{}
class Bike{}
class Yamaha : Bike {}
class KTM : Bike{}

void DoSomething(<some other parameters>, Type targetType){}

//I call DoSomething with:
service.DoSomething(...., typeof(BMW));

有什么方法可以在程序员编写代码时强制 targetype 仅用于基础 class Car

在执行过程中很容易检查,但我想强制执行我们想要的预期基数class。

我希望当程序员键入:service.DoSomething(...., typeof(KTM)); 代码在编译时出错。

谢谢

您可以尝试为您的用例使用泛型。它看起来像:

void DoSomething<T>(<some other parameters>) where T: Car {}

service.DoSomething<BMW>(...);