ProjectionPath.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Client / System / Data / Services / Client / ProjectionPath.cs / 1305376 / ProjectionPath.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//  
// Provides a class to represent an annotated path of segments
// (each of which is a step in the parsed tree). 
//  
//---------------------------------------------------------------------
 
namespace System.Data.Services.Client
{
    #region Namespaces.
 
    using System.Collections.Generic;
    using System.Diagnostics; 
    using System.Linq.Expressions; 
    using System.Text;
 
    #endregion Namespaces.

    /// Use this class to represent an annotated list of path segments.
    [DebuggerDisplay("{ToString()}")] 
    internal class ProjectionPath : List
    { 
        #region Constructors. 

        /// Initializes a new  instance. 
        internal ProjectionPath() : base()
        {
        }
 
        /// Initializes a new  instance.
        /// Root parameter for this path. 
        /// Expression to get the expected root type in the target tree. 
        /// Expression for the root entry.
        internal ProjectionPath(ParameterExpression root, Expression expectedRootType, Expression rootEntry) 
            : base()
        {
            this.Root = root;
            this.RootEntry = rootEntry; 
            this.ExpectedRootType = expectedRootType;
        } 
 
        /// Initializes a new  instance.
        /// Root parameter for this path. 
        /// Expression to get the expected root type in the target tree.
        /// Expression for the root entry.
        /// Member to initialize the path with.
        internal ProjectionPath(ParameterExpression root, Expression expectedRootType, Expression rootEntry, IEnumerable members) 
            : this(root, expectedRootType, rootEntry)
        { 
            Debug.Assert(members != null, "members != null"); 

            foreach (Expression member in members) 
            {
                this.Add(new ProjectionPathSegment(this, ((MemberExpression)member).Member.Name, member.Type));
            }
        } 

        #endregion Constructors. 
 
        #region Internal properties.
 
        /// Parameter expression in the source tree.
        internal ParameterExpression Root
        {
            get; 
            private set;
        } 
 
        /// Expression to get the entry for  in the target tree.
        internal Expression RootEntry 
        {
            get;
            private set;
        } 

        /// Expression to get the expected root type in the target tree. 
        internal Expression ExpectedRootType 
        {
            get; 
            private set;
        }

        #endregion Internal properties. 

        #region Methods. 
 
        /// Provides a string representation of this object.
        /// A string representation of this object, suitable for debugging. 
        public override string ToString()
        {
            StringBuilder builder = new StringBuilder();
            builder.Append(this.Root.ToString()); 
            builder.Append("->");
            for (int i = 0; i < this.Count; i++) 
            { 
                if (i > 0)
                { 
                    builder.Append('.');
                }

                builder.Append(this[i].Member == null ? "*" : this[i].Member); 
            }
 
            return builder.ToString(); 
        }
 
        #endregion Methods.
    }
}

// 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