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
- MultiByteCodec.cs
- BaseUriHelper.cs
- SafeWaitHandle.cs
- ProgramPublisher.cs
- UnmanagedMemoryStream.cs
- InvalidateEvent.cs
- OverflowException.cs
- SolidColorBrush.cs
- ParameterBuilder.cs
- TableLayoutColumnStyleCollection.cs
- ExpressionBuilder.cs
- GeometryHitTestParameters.cs
- InvokePattern.cs
- MimeTextImporter.cs
- DocumentOrderQuery.cs
- Globals.cs
- NotSupportedException.cs
- ContentValidator.cs
- TCPClient.cs
- Privilege.cs
- CngAlgorithm.cs
- SafeWaitHandle.cs
- HttpEncoder.cs
- TileBrush.cs
- BufferBuilder.cs
- TypeLibraryHelper.cs
- CodePageEncoding.cs
- MediaElementAutomationPeer.cs
- HtmlTitle.cs
- ArraySegment.cs
- MDIWindowDialog.cs
- NameValueCollection.cs
- MetadataItem_Static.cs
- WindowsTab.cs
- ExeConfigurationFileMap.cs
- WebEventCodes.cs
- GroupItem.cs
- FontFamilyValueSerializer.cs
- MsmqChannelFactoryBase.cs
- SqlExpander.cs
- IpcChannelHelper.cs
- AlternateViewCollection.cs
- WebAdminConfigurationHelper.cs
- MatrixIndependentAnimationStorage.cs
- CurrentTimeZone.cs
- TextRangeBase.cs
- UpdateEventArgs.cs
- Vertex.cs
- unsafenativemethodsother.cs
- FileDialog_Vista.cs
- TPLETWProvider.cs
- RuleAttributes.cs
- ListBindingConverter.cs
- LinearGradientBrush.cs
- ReversePositionQuery.cs
- WebPartCatalogCloseVerb.cs
- ListViewSortEventArgs.cs
- ComponentRenameEvent.cs
- PageWrapper.cs
- EventMappingSettingsCollection.cs
- DocumentGridPage.cs
- Rijndael.cs
- InvalidAsynchronousStateException.cs
- SiteOfOriginContainer.cs
- RelatedCurrencyManager.cs
- GenericUriParser.cs
- RelationshipConstraintValidator.cs
- Vector3DConverter.cs
- ProcessModuleCollection.cs
- XmlSchemaInfo.cs
- DataGridViewCellValueEventArgs.cs
- XmlSerializerSection.cs
- SafeBitVector32.cs
- Renderer.cs
- ContainerAction.cs
- CloudCollection.cs
- Brush.cs
- XmlChildNodes.cs
- connectionpool.cs
- SpecularMaterial.cs
- ContainsSearchOperator.cs
- SudsParser.cs
- DecimalKeyFrameCollection.cs
- DurationConverter.cs
- MouseButtonEventArgs.cs
- BoundConstants.cs
- RuleInfoComparer.cs
- RC2CryptoServiceProvider.cs
- StylusTip.cs
- QueryOpeningEnumerator.cs
- NegatedCellConstant.cs
- ObservableCollectionDefaultValueFactory.cs
- SvcMapFile.cs
- InlineObject.cs
- ConfigurationSectionCollection.cs
- ResourceReferenceKeyNotFoundException.cs
- MyContact.cs
- CreateUserErrorEventArgs.cs
- CheckedListBox.cs
- HtmlElement.cs