背景
我正在为一个小型个人游戏项目编写一些组件(这种组件)。在该系统中,实体具有属于不同类别的各种类型的组件。例如,组件的IController类别包括KeyboardController和AiController。一个实体有一组组件,并且每个类别应该只有一个组件。所有组件都继承自IComponent。
组件有一个MetaType属性,它应该报告它们对应的类型,以便说:“嘿,请把我当作这种类型的组件!” 此属性返回一个Type对象。AiController返回typeof(IController) ,告诉实体将此视为其控制器。其他有效的 MetaType 是typeof(AiController)或typeof(IComponent)。它不应该能够返回任何任意类型,例如typeof(int) - 只是组件类型。
我的问题
目前,我的组件可以报告 MetaType 的任意类型。例如,AIController实际上可以返回typeof(int) ——毕竟这是一个有效的 Type 对象。
我可以限制Type值,使得唯一有效的类型是IComponent是其祖先的任何类或接口的类型吗?我想这样的变量声明可能如下所示:
Type<IComponent> component; // This can only store certain types
Type where Type : IComponent component; // This too
我对这是否可能特别感兴趣——在替代方法中没有那么多(我知道有几种方法,它们包括只允许这种行为,因为我是唯一使用此代码的人。