ProjectionPathSegment.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 / ProjectionPathSegment.cs / 1305376 / ProjectionPathSegment.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//  
// Provides a class that represents a single step in a path of segments
// over a parsed tree used during projection-driven materialization. 
//  
//---------------------------------------------------------------------
 
namespace System.Data.Services.Client
{
    #region Namespaces.
 
    using System;
    using System.Diagnostics; 
    using System.Linq.Expressions; 

    #endregion Namespaces. 

    /// 
    /// Use this class to represent a step in a path of segments
    /// over a parsed tree used during projection-driven materialization. 
    /// 
    [DebuggerDisplay("Segment {ProjectionType} {Member}")] 
    internal class ProjectionPathSegment 
    {
        #region Constructors. 

        /// Initializes a new  instance.
        /// Path on which this segment is located.
        /// Name of member to access when traversing a property; possibly null. 
        /// 
        /// Type that we expect to project out; typically the same as , but may be adjusted. 
        ///  
        internal ProjectionPathSegment(ProjectionPath startPath, string member, Type projectionType)
        { 
            Debug.Assert(startPath != null, "startPath != null");

            this.Member = member;
            this.StartPath = startPath; 
            this.ProjectionType = projectionType;
        } 
 
        #endregion Constructors.
 
        #region Internal properties.

        /// Name of member to access when traversing a property; possibly null.
        internal string Member 
        {
            get; 
            private set; 
        }
 
        /// 
        /// Type that we expect to project out; typically the same as , but may be adjusted.
        /// 
        ///  
        /// In particular, this type will be adjusted for nested narrowing entity types.
        /// 
        /// For example: 
        /// from c in ctx.Customers select new NarrowCustomer() {
        ///   ID = c.ID, 
        ///   BestFriend = new NarrowCustomer() { ID = c.BestFriend.ID }
        /// }
        ///
        /// In this case, ID will match types on both sides, but BestFriend 
        /// will be of type Customer in the member access of the source tree
        /// and we want to project out a member-initialized NarrowCustomer 
        /// in the target tree. 
        /// 
        internal Type ProjectionType 
        {
            get;
            set;
        } 

        /// Path on which this segment is located. 
        internal ProjectionPath StartPath 
        {
            get; 
            private set;
        }

        #endregion Internal properties. 
    }
} 

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