private EntityId UpdateHeroEntity(JsonElement obj, ISet <EntityId> entityIds) { EntityId entityId = _extractId(obj); entityIds.Add(entityId); if (entityId.Name.Equals("Human", StringComparison.Ordinal)) { HumanEntity entity = _entityStore.GetOrCreate <HumanEntity>(entityId); entity.Name = DeserializeNonNullString(obj, "name"); var friends = new List <EntityId>(); foreach (JsonElement child in obj.GetProperty("friends").EnumerateArray()) { friends.Add(UpdateFriendEntity(child, entityIds)); } entity.Friends = friends; return(entityId); } if (entityId.Name.Equals("Droid", StringComparison.Ordinal)) { DroidEntity entity = _entityStore.GetOrCreate <DroidEntity>(entityId); entity.Name = DeserializeNonNullString(obj, "name"); var friends = new List <EntityId>(); foreach (JsonElement child in obj.GetProperty("friends").EnumerateArray()) { friends.Add(UpdateFriendEntity(child, entityIds)); } entity.Friends = friends; return(entityId); } throw new NotSupportedException(); }
private EntityId UpdateFriendEntity(JsonElement obj, ISet <EntityId> entityIds) { EntityId entityId = _extractId(obj); entityIds.Add(entityId); if (entityId.Name.Equals("Human", StringComparison.Ordinal)) { HumanEntity entity = _entityStore.GetOrCreate <HumanEntity>(entityId); entity.Name = DeserializeNonNullString(obj, "name"); return(entityId); } if (entityId.Name.Equals("Droid", StringComparison.Ordinal)) { DroidEntity entity = _entityStore.GetOrCreate <DroidEntity>(entityId); entity.Name = DeserializeNonNullString(obj, "name"); return(entityId); } throw new NotSupportedException(); }