safelink.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Metadata / Edm / safelink.cs / 1 / safelink.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner  [....], [....]
//---------------------------------------------------------------------using System; 
using System.Collections.Generic; 
using System.Linq;
using System.Text; 
using System.Diagnostics;

namespace System.Data.Metadata.Edm
{ 
    internal class SafeLink where TParent : class
    { 
        private TParent _value; 
        public TParent Value { get { return _value; } }
 

        internal static IEnumerable BindChildren(TParent parent, Func> getLink, IEnumerable children)
        {
 
            foreach (TChild child in children)
            { 
                BindChild(parent, getLink, child); 
            }
            return children; 
        }

        internal static TChild BindChild(TParent parent, Func> getLink, TChild child)
        { 
            SafeLink link = getLink(child);
 
            Debug.Assert(link._value == null || link._value == parent, "don't try to hook up the same child to a different parent"); 
            // this is the good stuff..
            // only this method can actually make the link since _value is a private 
            link._value = parent;

            return child;
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner  [....], [....]
//---------------------------------------------------------------------using System; 
using System.Collections.Generic; 
using System.Linq;
using System.Text; 
using System.Diagnostics;

namespace System.Data.Metadata.Edm
{ 
    internal class SafeLink where TParent : class
    { 
        private TParent _value; 
        public TParent Value { get { return _value; } }
 

        internal static IEnumerable BindChildren(TParent parent, Func> getLink, IEnumerable children)
        {
 
            foreach (TChild child in children)
            { 
                BindChild(parent, getLink, child); 
            }
            return children; 
        }

        internal static TChild BindChild(TParent parent, Func> getLink, TChild child)
        { 
            SafeLink link = getLink(child);
 
            Debug.Assert(link._value == null || link._value == parent, "don't try to hook up the same child to a different parent"); 
            // this is the good stuff..
            // only this method can actually make the link since _value is a private 
            link._value = parent;

            return child;
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

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