// void SetSettingAuxiliary<T>(string key, T value, Type settingType, // bool xmlConvertible, out bool alreadySet) // { // alreadySet = false; // cache.Remove(key); // // object existingValue; // if (localStore.Status == SettingsStoreStatus.Ready // && localStore.TryGetValue(key, settingType, out existingValue) // || (roamingStore != null && roamingStore.Status == SettingsStoreStatus.Ready // && roamingStore.TryGetValue(key, settingType, out existingValue))) // { // if (xmlConvertible) // { // object existingObject; // if (TryConvertFromXml(settingType, existingValue, out existingObject)) // { // if (object.Equals(existingObject, value)) // { // alreadySet = true; // return; // } // } // } // else if (existingValue != null && existingValue is byte[] && settingType != typeof(byte[])) // { // var existingObject = SilverlightSerializer.Deserialize((byte[])existingValue); // if (AreEqual(value, existingObject)) // { // alreadySet = true; // return; // } // } // // if (existingValue != null && existingValue.Equals(value)) // { // alreadySet = true; // return; // } // } // // if (transientStore.Status == SettingsStoreStatus.Ready // && transientStore.TryGetValue(key, settingType, out existingValue) // && existingValue.Equals(value)) // { // alreadySet = true; // } // } static bool AreEqual <T>(T value, object existingObject) { if (existingObject != null && existingObject is IDictionary && value is IDictionary) { if (CollectionComparer.AreEqualDictionaries((IDictionary)existingObject, (IDictionary)value)) { return(true); } } else if (existingObject != null && existingObject is IList && value is IList) { if (CollectionComparer.AreEqualLists((IList)existingObject, (IList)value)) { return(true); } } if (object.Equals(existingObject, value)) { return(true); } return(false); }