Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataWeb / Client / System / Data / Services / Client / ALinq / DataServiceExpressionVisitor.cs / 1 / DataServiceExpressionVisitor.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Expression Visitors for Linq to URI translator
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services.Client
{
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using System.Diagnostics;
///
/// Specific Vistior base class for the DataServiceQueryProvider.
///
internal abstract class DataServiceExpressionVisitor : ExpressionVisitor
{
///
/// Main visit method.
///
/// Expression to visit
/// Visited expression
internal override Expression Visit(Expression exp)
{
if (exp == null)
{
return null;
}
switch ((ResourceExpressionType)exp.NodeType)
{
case ResourceExpressionType.RootResourceSet:
case ResourceExpressionType.ResourceNavigationProperty:
return this.VisitResourceSetExpression((ResourceSetExpression)exp);
case ResourceExpressionType.ResourceNavigationPropertySingleton:
return this.VisitNavigationPropertySingletonExpression((NavigationPropertySingletonExpression)exp);
case ResourceExpressionType.InputReference:
return this.VisitInputReferenceExpression((InputReferenceExpression)exp);
default:
return base.Visit(exp);
}
}
///
/// ResourceSetExpression visit method.
///
/// ResourceSetExpression expression to visit
/// Visited ResourceSetExpression expression
internal virtual Expression VisitResourceSetExpression(ResourceSetExpression rse)
{
Expression source = this.Visit(rse.Source);
if (source != rse.Source)
{
rse = new ResourceSetExpression(rse.Type, source, rse.MemberExpression, rse.ResourceType, rse.ExpandPaths, rse.CustomQueryOptions);
}
return rse;
}
///
/// NavigationPropertySingletonExpressionvisit method.
///
/// NavigationPropertySingletonExpression expression to visit
/// Visited NavigationPropertySingletonExpression expression
internal virtual Expression VisitNavigationPropertySingletonExpression(NavigationPropertySingletonExpression npse)
{
Expression source = this.Visit(npse.Source);
if (source != npse.Source)
{
npse = new NavigationPropertySingletonExpression(npse.Type, source, npse.MemberExpression, npse.ExpandPaths, npse.CustomQueryOptions);
}
return npse;
}
///
/// Visit an , producing a new InputReferenceExpression
/// based on the visited form of the that is referenced by
/// the InputReferenceExpression argument, .
///
/// InputReferenceExpression expression to visit
/// Visited InputReferenceExpression expression
internal virtual Expression VisitInputReferenceExpression(InputReferenceExpression ire)
{
if (ire == null)
{
return null;
}
ResourceExpression re = (ResourceExpression)this.Visit(ire.Target);
return re.CreateReference();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Expression Visitors for Linq to URI translator
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services.Client
{
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using System.Diagnostics;
///
/// Specific Vistior base class for the DataServiceQueryProvider.
///
internal abstract class DataServiceExpressionVisitor : ExpressionVisitor
{
///
/// Main visit method.
///
/// Expression to visit
/// Visited expression
internal override Expression Visit(Expression exp)
{
if (exp == null)
{
return null;
}
switch ((ResourceExpressionType)exp.NodeType)
{
case ResourceExpressionType.RootResourceSet:
case ResourceExpressionType.ResourceNavigationProperty:
return this.VisitResourceSetExpression((ResourceSetExpression)exp);
case ResourceExpressionType.ResourceNavigationPropertySingleton:
return this.VisitNavigationPropertySingletonExpression((NavigationPropertySingletonExpression)exp);
case ResourceExpressionType.InputReference:
return this.VisitInputReferenceExpression((InputReferenceExpression)exp);
default:
return base.Visit(exp);
}
}
///
/// ResourceSetExpression visit method.
///
/// ResourceSetExpression expression to visit
/// Visited ResourceSetExpression expression
internal virtual Expression VisitResourceSetExpression(ResourceSetExpression rse)
{
Expression source = this.Visit(rse.Source);
if (source != rse.Source)
{
rse = new ResourceSetExpression(rse.Type, source, rse.MemberExpression, rse.ResourceType, rse.ExpandPaths, rse.CustomQueryOptions);
}
return rse;
}
///
/// NavigationPropertySingletonExpressionvisit method.
///
/// NavigationPropertySingletonExpression expression to visit
/// Visited NavigationPropertySingletonExpression expression
internal virtual Expression VisitNavigationPropertySingletonExpression(NavigationPropertySingletonExpression npse)
{
Expression source = this.Visit(npse.Source);
if (source != npse.Source)
{
npse = new NavigationPropertySingletonExpression(npse.Type, source, npse.MemberExpression, npse.ExpandPaths, npse.CustomQueryOptions);
}
return npse;
}
///
/// Visit an , producing a new InputReferenceExpression
/// based on the visited form of the that is referenced by
/// the InputReferenceExpression argument, .
///
/// InputReferenceExpression expression to visit
/// Visited InputReferenceExpression expression
internal virtual Expression VisitInputReferenceExpression(InputReferenceExpression ire)
{
if (ire == null)
{
return null;
}
ResourceExpression re = (ResourceExpression)this.Visit(ire.Target);
return re.CreateReference();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OrderByBuilder.cs
- CustomPopupPlacement.cs
- PropertyTabChangedEvent.cs
- OleDbConnection.cs
- MediaPlayer.cs
- EntityViewContainer.cs
- IndentedWriter.cs
- activationcontext.cs
- DesignerAutoFormatCollection.cs
- DirectoryNotFoundException.cs
- SecurityDescriptor.cs
- BuiltInExpr.cs
- LinkUtilities.cs
- WebPartConnectionsCancelEventArgs.cs
- TypeSystem.cs
- LocalizeDesigner.cs
- ProfileSettings.cs
- CollectionViewSource.cs
- ListItemConverter.cs
- SyntaxCheck.cs
- ProfilePropertyNameValidator.cs
- SequentialOutput.cs
- ClientProxyGenerator.cs
- DataGridViewLinkColumn.cs
- printdlgexmarshaler.cs
- CheckBoxList.cs
- ISAPIApplicationHost.cs
- hresults.cs
- DynamicUpdateCommand.cs
- GeneralTransform3DGroup.cs
- ObjectSet.cs
- DataTableMapping.cs
- ValueTypeFixupInfo.cs
- Blend.cs
- MethodToken.cs
- ProfileProvider.cs
- XmlChildNodes.cs
- UniqueID.cs
- SettingsAttributeDictionary.cs
- XmlCharCheckingWriter.cs
- ConnectionStringsExpressionBuilder.cs
- EastAsianLunisolarCalendar.cs
- MediaElement.cs
- GeometryModel3D.cs
- SiteMap.cs
- XmlSchemaComplexContent.cs
- RuntimeConfig.cs
- ReadWriteControlDesigner.cs
- ToolStripSplitButton.cs
- SafeFileHandle.cs
- OdbcConnectionFactory.cs
- BrowserPolicyValidator.cs
- PointCollection.cs
- ParagraphVisual.cs
- SystemDiagnosticsSection.cs
- WrappedDispatcherException.cs
- CategoryAttribute.cs
- ToolStripStatusLabel.cs
- SmiEventStream.cs
- ConfigurationStrings.cs
- PageWrapper.cs
- ResourceBinder.cs
- ColorPalette.cs
- Byte.cs
- ToolStripItemClickedEventArgs.cs
- EventProviderClassic.cs
- TypeToken.cs
- StickyNoteHelper.cs
- SizeFConverter.cs
- QueryCoreOp.cs
- XmlSchemaSimpleContentExtension.cs
- SecurityDocument.cs
- Expander.cs
- Image.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- FunctionCommandText.cs
- TabControlDesigner.cs
- BooleanExpr.cs
- MdiWindowListItemConverter.cs
- HasRunnableWorkflowEvent.cs
- XmlSchemaAnyAttribute.cs
- ActivityWithResultWrapper.cs
- TransformerInfo.cs
- FormViewCommandEventArgs.cs
- DataGridViewCellMouseEventArgs.cs
- FontNamesConverter.cs
- InputMethodStateTypeInfo.cs
- TableItemProviderWrapper.cs
- RIPEMD160.cs
- SecurityChannel.cs
- PriorityChain.cs
- ThemeDictionaryExtension.cs
- Authorization.cs
- OptimisticConcurrencyException.cs
- RepeatInfo.cs
- GridViewColumn.cs
- XmlElementList.cs
- BooleanStorage.cs
- WinCategoryAttribute.cs
- BinaryObjectWriter.cs