Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Client / System / Data / Services / Client / ALinq / DataServiceExpressionVisitor.cs / 1305376 / DataServiceExpressionVisitor.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Expression Visitors for Linq to URI translator
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services.Client
{
#region Namespaces.
using System.Diagnostics;
using System.Linq.Expressions;
#endregion Namespaces.
///
/// Specific Vistior base class for the DataServiceQueryProvider.
///
internal abstract class DataServiceALinqExpressionVisitor : ALinqExpressionVisitor
{
///
/// 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.CountOption, rse.CustomQueryOptions, rse.Projection);
}
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.MemberExpression.Type, npse.ExpandPaths, npse.CountOption, npse.CustomQueryOptions, npse.Projection);
}
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)
{
Debug.Assert(ire != null, "ire != null -- otherwise caller never should have visited here");
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
- QueryOutputWriterV1.cs
- StringReader.cs
- JpegBitmapEncoder.cs
- HTMLTagNameToTypeMapper.cs
- SourceChangedEventArgs.cs
- TokenCreationException.cs
- PersonalizationProviderHelper.cs
- ProxyAttribute.cs
- RegisteredDisposeScript.cs
- SiteMapSection.cs
- InstalledVoice.cs
- DataFormats.cs
- AuthenticationModulesSection.cs
- entityreference_tresulttype.cs
- XmlSchemaAttribute.cs
- ToolbarAUtomationPeer.cs
- WebControlsSection.cs
- VisualStyleRenderer.cs
- ArraySubsetEnumerator.cs
- ProgramNode.cs
- ExceptionList.cs
- UniqueIdentifierService.cs
- _HeaderInfo.cs
- TraceContextRecord.cs
- ObjectItemCachedAssemblyLoader.cs
- ThicknessConverter.cs
- FrameworkElementFactoryMarkupObject.cs
- KeyedCollection.cs
- TouchPoint.cs
- DesignerWebPartChrome.cs
- UnsafeNativeMethods.cs
- PropertyDescriptorCollection.cs
- AlternateView.cs
- CodeNamespaceImport.cs
- ProvideValueServiceProvider.cs
- ResourceReferenceKeyNotFoundException.cs
- webbrowsersite.cs
- CroppedBitmap.cs
- DocumentPage.cs
- PropertyDescriptorComparer.cs
- EventHandlerService.cs
- WindowsListViewGroup.cs
- ToolStripSplitStackLayout.cs
- ResourcePool.cs
- EncoderNLS.cs
- cache.cs
- EtwProvider.cs
- BulletedList.cs
- ResXFileRef.cs
- Compiler.cs
- Group.cs
- FileNotFoundException.cs
- Thread.cs
- RecipientInfo.cs
- ZipIOModeEnforcingStream.cs
- ScrollViewer.cs
- HtmlElementEventArgs.cs
- UpdateInfo.cs
- Accessible.cs
- RawStylusActions.cs
- PLINQETWProvider.cs
- SharedStatics.cs
- ReferencedCollectionType.cs
- EllipseGeometry.cs
- HttpRawResponse.cs
- LazyInitializer.cs
- MaskedTextBoxDesignerActionList.cs
- FileFormatException.cs
- FacetChecker.cs
- WeakReference.cs
- IOException.cs
- XPathScanner.cs
- CroppedBitmap.cs
- RotateTransform3D.cs
- CellTreeNodeVisitors.cs
- SeparatorAutomationPeer.cs
- SessionPageStatePersister.cs
- _emptywebproxy.cs
- ApplicationException.cs
- XsdDuration.cs
- WebPageTraceListener.cs
- Clause.cs
- RootBuilder.cs
- CalendarKeyboardHelper.cs
- ReadOnlyTernaryTree.cs
- OutOfProcStateClientManager.cs
- UnsafeNativeMethods.cs
- DesignTimeData.cs
- XmlSchemaNotation.cs
- DependentList.cs
- DispatcherHookEventArgs.cs
- SqlDeflator.cs
- DragDeltaEventArgs.cs
- BamlResourceDeserializer.cs
- LambdaCompiler.Logical.cs
- Utils.cs
- ThreadPool.cs
- BatchParser.cs
- XmlSchemaExternal.cs
- Timer.cs