Code:
/ 4.0 / 4.0 / 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 /// InputReferenceExpression expression to visit ///, producing a new InputReferenceExpression /// based on the visited form of the that is referenced by /// the InputReferenceExpression argument, . /// 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. //---------------------------------------------------------------------- //// 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 /// InputReferenceExpression expression to visit ///, producing a new InputReferenceExpression /// based on the visited form of the that is referenced by /// the InputReferenceExpression argument, . /// 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
- ColumnReorderedEventArgs.cs
- DbProviderFactories.cs
- JoinTreeNode.cs
- DesignTimeVisibleAttribute.cs
- SoapSchemaMember.cs
- ThreadStateException.cs
- BoundPropertyEntry.cs
- AssemblyCacheEntry.cs
- TrustManagerMoreInformation.cs
- SymbolTable.cs
- RouteItem.cs
- ReflectionPermission.cs
- Panel.cs
- DateTime.cs
- DoneReceivingAsyncResult.cs
- Debug.cs
- KernelTypeValidation.cs
- DataObjectCopyingEventArgs.cs
- DefaultValueConverter.cs
- PropertyPathConverter.cs
- SizeLimitedCache.cs
- TemplateBamlTreeBuilder.cs
- BinaryNode.cs
- XmlSchemaSimpleContent.cs
- DesigntimeLicenseContext.cs
- WorkflowOperationAsyncResult.cs
- EventLevel.cs
- ToolStripPanelRenderEventArgs.cs
- Span.cs
- SqlDependencyListener.cs
- FormsAuthentication.cs
- BasicAsyncResult.cs
- Drawing.cs
- Group.cs
- TabletCollection.cs
- PersonalizationStateInfoCollection.cs
- XmlSerializableReader.cs
- BlurEffect.cs
- ApplicationInfo.cs
- AddressingProperty.cs
- SourceLineInfo.cs
- TracedNativeMethods.cs
- TemplatePartAttribute.cs
- StringUtil.cs
- httpserverutility.cs
- RefExpr.cs
- WebBrowser.cs
- MeshGeometry3D.cs
- PipeException.cs
- RoutedEventValueSerializer.cs
- FilePresentation.cs
- TranslateTransform3D.cs
- FirstMatchCodeGroup.cs
- IdentityHolder.cs
- SqlDependencyListener.cs
- PolicyException.cs
- DLinqDataModelProvider.cs
- FixedSOMTextRun.cs
- WebServiceHostFactory.cs
- ThousandthOfEmRealPoints.cs
- SmiMetaData.cs
- XmlSiteMapProvider.cs
- RectAnimationClockResource.cs
- HwndPanningFeedback.cs
- GenericPrincipal.cs
- WorkflowTimerService.cs
- UnsafeMethods.cs
- KeyTimeConverter.cs
- FontResourceCache.cs
- reliableinputsessionchannel.cs
- XmlMessageFormatter.cs
- ContextBase.cs
- Overlapped.cs
- NextPreviousPagerField.cs
- ClientFactory.cs
- COM2ICategorizePropertiesHandler.cs
- WebPartActionVerb.cs
- Comparer.cs
- RuntimeWrappedException.cs
- ProfileBuildProvider.cs
- MessageEventSubscriptionService.cs
- StickyNoteAnnotations.cs
- TempEnvironment.cs
- COM2TypeInfoProcessor.cs
- WebPartManager.cs
- SerialStream.cs
- xmlfixedPageInfo.cs
- _NetworkingPerfCounters.cs
- TileBrush.cs
- DataShape.cs
- XPathSelfQuery.cs
- WindowsIdentity.cs
- DrawingBrush.cs
- TextElementEditingBehaviorAttribute.cs
- AddInProcess.cs
- ProfileService.cs
- TextModifier.cs
- FormatSelectingMessageInspector.cs
- ValidatingPropertiesEventArgs.cs
- ComplexType.cs