我正在努力学习泛型、接口和多态。
我正在创建一个对象池,我希望这些对象符合泛型接口,这样我就可以告诉它们返回到各自的池中。
我已经创建了一个接受泛型类型和泛型类的泛型接口。
public interface IWidgetPoolObject<T> {
void ReturnToPool();
void SetPool(T pool);
}
public class WidgetPool<T> : MonoBehaviour where T : MonoBehaviour {
private List<T> m_poolList;
public T GetObject() {
//..
}
public void PoolObject(T pooledObject) {
//..
}
}
在下面的示例中,在接口方法SetPool(T pool)
中,我尝试设置类池。但是我得到了can't cast to type错误。
我认识到SomeClass
的私有成员var是WidgetPool<SomeClass>
类型的,而SetPool只是传入了一种SomeClass
类型,但是当我尝试强制转换m_Pool = (WidgetPool<SomeClass>) pool;
时,这也不起作用。
public class SomeClass : MonoBehaviour, IWidgetPoolObject<SomeClass> {
private WidgetPool<SomeClass> m_Pool;
public void ReturnToPool() {
m_Pool.PoolObject(this);
}
public void SetPool(SomeClass pool) {
m_Pool = pool; //THIS LINE
}
}
我知道的还不够多,无法正确搜索我的问题所在。有帮助吗?
https://stackoverflow.com/questions/51581494
复制相似问题