FreezableOperations.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Shared / MS / Internal / FreezableOperations.cs / 1 / FreezableOperations.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// Description: FreezableOperations class definition. 
// 
// History:
//  2005/02/02 : [....] - Created 
//
//---------------------------------------------------------------------------

using System; 
using System.Windows;
 
using MS.Internal.PresentationCore; 

namespace MS.Internal 
{
    /// 
    ///     Internal static class which provides helper methods for common
    ///     Freezable operations. 
    /// 
    [FriendAccessAllowed] // Built into Core, also used by Framework. 
    internal static class FreezableOperations 
    {
        //----------------------------------------------------- 
        //
        //  Constructors
        //
        //----------------------------------------------------- 

        //------------------------------------------------------ 
        // 
        //  Internal Methods
        // 
        //-----------------------------------------------------

        #region Internal Methods
 
        /// 
        ///     A null-safe wrapper around Freezable.Clone().  (If a null 
        ///     is encountered it returns null.) 
        /// 
        internal static Freezable Clone(Freezable freezable) 
        {
            if (freezable == null)
            {
                return null; 
            }
 
            return freezable.Clone(); 
        }
 
        /// 
        ///     Semantically equivilent to Freezable.Clone().Freeze() except that
        ///     GetAsFrozen avoids copying any portions of the Freezable graph
        ///     which are already frozen. 
        /// 
        public static Freezable GetAsFrozen(Freezable freezable) 
        { 
            if (freezable == null)
            { 
                return null;
            }

            return freezable.GetAsFrozen(); 
        }
 
        ///  
        /// If freezable is already frozen, it returns freezable
        /// If freezable is not frozen, it returns a copy that is frozen if possible 
        /// 
        internal static Freezable GetAsFrozenIfPossible(Freezable freezable)
        {
            if (freezable == null) 
            {
                return null; 
            } 

            if (freezable.CanFreeze) 
            {
                freezable = freezable.GetAsFrozen();
            }
 
            return freezable;
        } 
 
        /// 
        ///     Moves the specified changed handler from the old value 
        ///     to the new value correctly no-oping nulls.  This is useful
        ///     for non-Freezables which expose a Freezable property.
        /// 
        internal static void PropagateChangedHandlers( 
            Freezable oldValue,
            Freezable newValue, 
            EventHandler changedHandler) 
        {
            if (newValue != null && !newValue.IsFrozen) 
            {
                newValue.Changed += changedHandler;
            }
 
            if (oldValue != null && !oldValue.IsFrozen)
            { 
                oldValue.Changed -= changedHandler; 
            }
        } 

        #endregion Internal Methods
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK