/// <summary> /// Write a RecencyOrderedList value to registry /// </summary> public static void Write(this RegistryKey registryKey, string subKeyPath, RecencyOrderedList <string> values) { // Check the arguments for null ThrowIf.IsNullArgument(registryKey, nameof(registryKey)); if (values != null) { // create the key whose values represent elements of the list RegistryKey subKey = registryKey.OpenSubKey(subKeyPath, true); if (subKey == null) { subKey = registryKey.CreateSubKey(subKeyPath); } // write the values int index = 0; foreach (string value in values) { subKey.SetValue(index.ToString(), value); ++index; } // remove any additional values when the new list is shorter than the old one int maximumValueName = subKey.ValueCount; for (; index < maximumValueName; ++index) { subKey.DeleteValue(index.ToString()); } } }
/// <summary> /// Get a RecencyOrderedList from the registry /// </summary> public static RecencyOrderedList <string> GetRecencyOrderedList(this RegistryKey registryKey, string subKeyPath) { // Check the arguments for null ThrowIf.IsNullArgument(registryKey, nameof(registryKey)); RegistryKey subKey = registryKey.OpenSubKey(subKeyPath); RecencyOrderedList <string> values = new RecencyOrderedList <string>(Constant.Defaults.NumberOfMostRecentDatabasesToTrack); if (subKey != null) { for (int index = subKey.ValueCount - 1; index >= 0; --index) { string listItem = (string)subKey.GetValue(index.ToString()); if (listItem != null) { values.SetMostRecent(listItem); } } } return(values); }