public TConfigurationItem Reset <TConfigurationItem>() where TConfigurationItem : ConfigurationItem <TConfigurationItem>, new() { var item = new TConfigurationItem(); if (items.Contains(item.ConfigurationItemId)) { items[item.ConfigurationItemId].Pod = new JsonPod <object, Guid>(item, item.ConfigurationItemId); items[item.ConfigurationItemId].Instance = null; } return(item); }
public TConfigurationItem Reset <TConfigurationItem>() where TConfigurationItem : ConfigurationItem <TConfigurationItem>, new() { var newConfig = new TConfigurationItem(); // If is already instantiated, destroy it if (objects.ContainsKey(newConfig.ConfigurationItemId)) { objects.Remove(newConfig.ConfigurationItemId); } // If is in elements, destroy it if (elements.ContainsKey(newConfig.ConfigurationItemId)) { elements.Remove(newConfig.ConfigurationItemId); } // Create new and return it elements.Add(newConfig.ConfigurationItemId, newConfig.ToXElement <TConfigurationItem>()); return(Get <TConfigurationItem>()); }
public TConfigurationItem Get <TConfigurationItem>() where TConfigurationItem : ConfigurationItem <TConfigurationItem>, new() { var id = new TConfigurationItem().ConfigurationItemId; if (objects.ContainsKey(id)) { return(objects[id] as TConfigurationItem); } if (elements.ContainsKey(id)) { var obj = elements[id].FromXElement <TConfigurationItem>(); objects.Add(id, obj); return(obj); } else { var res = new TConfigurationItem(); elements.Add(res.ConfigurationItemId, res.ToXElement <TConfigurationItem>()); objects.Add(id, res); return(res); } }
public TConfigurationItem Get <TConfigurationItem>() where TConfigurationItem : ConfigurationItem <TConfigurationItem>, new() { var id = new TConfigurationItem().ConfigurationItemId; if (items.Contains(id)) { var item = items[id]; if (item.Instance != null) { return((TConfigurationItem)item.Instance); } if (item.Pod.Is <TConfigurationItem>()) { return(item.Pod.As <TConfigurationItem>()); } throw new InvalidCastException($"Configuration item with id '{id}' is not of type '{typeof(TConfigurationItem).Name}'"); } else { var res = new TConfigurationItem(); AddItem(res); return(res); } }