我有一个名为的基类Powerup
和 2 个后代类Bomb
和Repel
.
我有一个需要调用的方法,我将对象类型作为参数传递。
public void PowerupExpired<T>() where T : Powerup {
//do stuff here
}
有什么方法可以从基类Powerup
中获取子类类型并将其传递给方法?我不能使用通用类型。我传递给方法的类型必须是类型Powerup
现在,我在Powerup
课堂上使用:
if (this is BombPowerup)
PowerupManager.PowerupExpired<BombPowerup>();
else if (this is RepelPowerup)
PowerupManager.PowerupExpired<RepelPowerup>();
//etc etc
虽然这不是整洁或可扩展的。
编辑:
我忘了补充。我不能拥有泛型类型的原因是因为我将继续使用 UnityGetComponent<T>()
方法,使用参数类型 pass through in PowerupExpired
,它不接受泛型类型。