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

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//  
//      Provides an expression visitor that can replace a ParameterExpression.
//  
// 
// @owner  [....], [....]
//--------------------------------------------------------------------- 
namespace System.Data.Services.Client
{
    using System.Diagnostics;
    using System.Linq.Expressions; 

    /// Provides an expression visitor that can replace a . 
    internal class ParameterReplacerVisitor : ALinqExpressionVisitor 
    {
        /// Expression to replace with. 
        private Expression newExpression;

        /// Parameter to replace.
        private ParameterExpression oldParameter; 

        /// Initializes a new  instance. 
        /// Parameter to replace. 
        /// Expression to replace with.
        private ParameterReplacerVisitor(ParameterExpression oldParameter, Expression newExpression) 
        {
            this.oldParameter = oldParameter;
            this.newExpression = newExpression;
        } 

        ///  
        /// Replaces the occurences of  for  in 
        /// .
        ///  
        /// Expression to perform replacement on.
        /// Parameter to replace.
        /// Expression to replace with.
        /// A new expression with the replacement performed. 
        internal static Expression Replace(Expression expression, ParameterExpression oldParameter, Expression newExpression)
        { 
            Debug.Assert(expression != null, "expression != null"); 
            Debug.Assert(oldParameter != null, "oldParameter != null");
            Debug.Assert(newExpression != null, "newExpression != null"); 
            return new ParameterReplacerVisitor(oldParameter, newExpression).Visit(expression);
        }

        /// ParameterExpression visit method. 
        /// The ParameterExpression expression to visit
        /// The visited ParameterExpression expression  
        internal override Expression VisitParameter(ParameterExpression p) 
        {
            if (p == this.oldParameter) 
            {
                return this.newExpression;
            }
            else 
            {
                return p; 
            } 
        }
    } 
}

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