private List <EntityStorage> InitTypes() { List <EntityStorage> output = new List <EntityStorage>(); foreach (var storage in _generatorManager.GetRequiredResources().OfType <EntityStorage>()) { var modeledStorage = _generatorManager.GetGenerable() .Files.OfType <Modelable>() .FirstOrDefault(x => x.Key.Equals(storage.Name)); var adapter = new StorageInterfaceAdapter(GetInstanceFromGenerator(modeledStorage)); _storages.Add(adapter, new Dictionary <EntitySet, EntityFactory>()); foreach (var entitySet in storage.EntitySets) { var entity = _prototype.Entities.Single(x => x.Name == entitySet.EntityName); var modeledEntity = _generatorManager.GetGenerable() .Files.OfType <Modelable>() .FirstOrDefault(x => x.Key.Equals(entity.Name)); _storages[adapter].Add(entitySet, new EntityFactory( entity, GetTypeFromGenerator(modeledEntity), entitySet, storage, Utils.FindAllInstances <LoadEntitiesFromEntityStorage>(_prototype).Where(x => x.EntitySetName == entitySet.Name && x.EntityStorageName == storage.Name && x.EntityName == entity.Name).ToList())); output.Add(storage); } } return(output); }