【发布时间】:2018-09-23 09:38:39
【问题描述】:
我是 Unity 的 C# 游戏制作者。我有收藏管理系统。
CollectableManager
public List<CollectableParent<Collectable>> collactableParentsList;
CollectableParent
public class CollectableParent<T> : CollectableRelatedMonoBehaviour where T : Collectable
SpawnPointDefinedCollectableParent
public class SpawnPointParentDefinedCollectableParent<T> : CollectableParent<T> where T : Collectable
收藏
public abstract class Collectable : CollectableRelatedMonoBehaviour, IHasPlayableSound
Collectable_Money
public class Collectable_Money : Collectable
CollectableParent_Money
public class CollectableParent_Money : SpawnPointParentDefinedCollectableParent<Collectable_Money>
问题
当 T 定义为“Collectable_Money”时,CollectableManager 中的“collactableParentsList”不接受SpawnPointParentDefinedCollectableParent<Collectable_Money> 作为项目,它是从“Collectable”派生的。如果我这样做SpawnPointParentDefinedCollectableParent<Collectable>,它将被接受为列表中的项目。
【问题讨论】:
标签: c# oop unity3d generics abstraction