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); } }