/// <summary> /// Semantically equivilent to Freezable.Clone().Freeze() except that /// GetAsFrozen avoids copying any portions of the Freezable graph /// which are already frozen. /// </summary> public static Freezable GetAsFrozen(Freezable freezable) { if (freezable == null) { return(null); } return(freezable.GetAsFrozen()); }
/// <summary> /// Stores a frozen copy of defaultValue /// </summary> internal FreezableDefaultValueFactory(Freezable defaultValue) { Debug.Assert(defaultValue != null, "Null can not be made mutable. Do not use FreezableDefaultValueFactory."); Debug.Assert(defaultValue.CanFreeze, "The defaultValue prototype must be freezable."); _defaultValuePrototype = defaultValue.GetAsFrozen(); }
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture) { Freezable fvalue = value as Freezable; if (fvalue == null) { return(fvalue); } return(fvalue.CanFreeze ? fvalue.Clone() : fvalue.GetAsFrozen()); }
/// <summary> /// If freezable is already frozen, it returns freezable /// If freezable is not frozen, it returns a copy that is frozen if possible /// </summary> internal static Freezable GetAsFrozenIfPossible(Freezable freezable) { if (freezable == null) { return(null); } if (freezable.CanFreeze) { freezable = freezable.GetAsFrozen(); } return(freezable); }