ResourceExpression.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataWeb / Client / System / Data / Services / Client / ALinq / ResourceExpression.cs / 3 / ResourceExpression.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//  
//      Base class for expressions representing resources
//  
// 
// @owner  [....]
//--------------------------------------------------------------------- 

namespace System.Data.Services.Client
{
    using System; 
    using System.Diagnostics;
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Linq.Expressions;
 
    /// 
    /// Abstract base class for expressions that support Query Options
    /// 
    internal abstract class ResourceExpression : Expression 
    {
        /// Singleton InputReferenceExpression that should be used to indicate a reference to this element of the resource path 
        internal InputReferenceExpression inputRef; 

        /// expand paths 
        private List expandPaths;

        /// custom query options
        private Dictionary customQueryOptions; 

        ///  
        /// Creates a Resource expression 
        /// 
        /// the return type of the expression 
        internal ResourceExpression(ExpressionType nodeType, Type type, List expandPaths, Dictionary customQueryOptions)
            : base(nodeType, type)
        {
            this.expandPaths = expandPaths ?? new List(); 
            this.customQueryOptions = customQueryOptions ?? new Dictionary();
        } 
 
        abstract internal ResourceExpression Cast(Type type);
 
        abstract internal bool HasQueryOptions { get; }

        abstract internal Type ResourceType { get; }
 
        /// 
        /// Does this expression produce at most 1 resource? 
        ///  
        abstract internal bool IsSingleton { get; }
 
        /// 
        /// Expand query option for ResourceSet
        /// 
        internal virtual List ExpandPaths 
        {
            get { return this.expandPaths; } 
            set { this.expandPaths = value; } 
        }
 
        /// 
        /// custom query options for ResourceSet
        /// 
        internal virtual Dictionary CustomQueryOptions 
        {
            get { return this.customQueryOptions; } 
            set { this.customQueryOptions = value; } 
        }
 
        /// 
        /// Creates an  that refers to this component of the resource path.
        /// The returned expression is guaranteed to be reference-equal (object.ReferenceEquals)
        /// to any other InputReferenceExpression that also refers to this resource path component. 
        /// 
        /// The InputReferenceExpression that refers to this resource path component 
        internal InputReferenceExpression CreateReference() 
        {
            if (this.inputRef == null) 
            {
                this.inputRef = new InputReferenceExpression(this.ResourceType, this);
            }
 
            return this.inputRef;
        } 
    } 
}

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