var _pool = new Dictionary<Type, Dictionary<EntityIdType, Object>>();
public IEnumerable<EntityType> GetItems<EntityType>()
{
Type myType = typeof(EntityType);
if (!_pool.ContainsKey(myType))
return new EntityType[0];
//does not work, always returns null
// return _pool[myType].Values; as IEnumerable<EntityType>;
//hack: cannot cast Values to IEnumarable directly
List<EntityType> foundItems = new List<EntityType>();
foreach (EntityType entity in _pool[myType].Values)
{
foundItems.Add(entity);
}
return foundItems as IEnumerable<EntityType>;
}
From stackoverflow
-
Try this:
return _pool[myType].Values.Cast<EntityType>();This has the effect of casting every element in the enumeration.
-
_pool is defined as being of type
Dictionary<Type, Dictionary<EntityIdType, Object>>Because of that, the call to the dictionary returned for a type returns an
ICollection<Object>which you can not cast directly toIEnumerble<EntityType>.Rather, you have to use the Cast extension method, as indicated in the other answer for this question:
0 comments:
Post a Comment