我正在尝试将通用 ValueCollection 作为 ICollection 返回。从他的 MSDN 文档中,它说 Dictionary.ValueCollection 实现了 ICollection 接口。但由于某种原因,当它需要将 ValueCollection 转换为 ICollection 时,我收到一个错误。这是代码示例,下面是我收到的错误。
public ICollection<T> GetAllComponents<T>() where T : Component
{
Dictionary<Entity, Component>.ValueCollection retval = null;
if(!this.componentEntityDatabase.ContainsKey(typeof(T)))
{
Logger.w (Logger.GetSimpleTagForCurrentMethod (this), "Could not find Component " + typeof(T).Name + " in database");
return new List<T>();
}
Dictionary<Entity, Component> entityRegistry = this.componentEntityDatabase [typeof(T)];
retval = entityRegistry.Values;
return (ICollection<T>)retval;
}
错误:
Cannot convert type 'Systems.Collections.Generic.Dictionary<Entity,Component>.ValueCollection' to System.Collections.Generic.ICollection<T>
我做错了吗?还是有另一种方法可以在不复制字典中的值的情况下完成此操作?