C#:指定一个函数arg必须继承自一个类,并实现一个接口(interface)?

标签 c# oop inheritance interface

我正在制作一个游戏,其中每个 Actor 都由一个 GameObjectController 表示。可以参与战斗的游戏对象实现ICombatant。如何指定战斗函数的参数必须继承自 GameObjectController 并实现 ICombatant?或者这是否表明我的代码结构不佳?

public void ComputeAttackUpdate(ICombatant attacker, AttackType attackType, ICombatant victim)

在上面的代码中,我希望attackervictim继承自GameObjectController并实现ICombatant。这在语法上可能吗?

最佳答案

我想说这可能表明您可以以某种方式进行重组,例如,拥有一个攻击者和受害者继承自的 Combatant 基类,该基类继承自 GameObjectController 并实现 ICombatant。

但是,您可以做类似的事情

ComputeAttackUpdate<T,U>(T attacker, AttackType attackType, U victim)
      where T: ICombatant, GameObjectController
      where U: ICombatant, GameObjectController

虽然我可能不会。

关于C#:指定一个函数arg必须继承自一个类,并实现一个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2534750/

相关文章:

c# - 插入包含外键的表

php - 将变量从数组解析到方法

java - 父类(super class)方法的实现可以依赖于子类字段吗

c++ - 继承reverse_iterator中用户自定义迭代器的所有函数

c# - 不确定 DbContext 如何对错误的表创建 SQL 查询

c# - If 语句 - 'or' 但不是 'and'

c# - 画线和时的奇怪行为。矩形

java - 避免使用代表 JSON 的 POJO 的样板代码

python - 如何使变量专属于类?

c++ - 在 C++ 的菱形问题中,为什么我们需要从子类调用 grand_parent 构造函数?