예제 #1
0
//		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);
        }