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
- DesignerAdRotatorAdapter.cs
- PatternMatcher.cs
- ReaderContextStackData.cs
- PropertyTabAttribute.cs
- DataViewManager.cs
- EntityViewGenerationConstants.cs
- ClusterSafeNativeMethods.cs
- StaticSiteMapProvider.cs
- VisualStyleInformation.cs
- SecurityTokenException.cs
- RenderingEventArgs.cs
- TagElement.cs
- HtmlMeta.cs
- UserCancellationException.cs
- LinkedList.cs
- WindowsRegion.cs
- TeredoHelper.cs
- TextElement.cs
- WindowsSolidBrush.cs
- BrushMappingModeValidation.cs
- UiaCoreApi.cs
- WebConvert.cs
- CompilerGeneratedAttribute.cs
- WhitespaceRuleReader.cs
- TextBoxAutoCompleteSourceConverter.cs
- HyperLink.cs
- ComponentChangingEvent.cs
- CardSpaceSelector.cs
- UnmanagedHandle.cs
- CommonDialog.cs
- Parallel.cs
- FormClosedEvent.cs
- SoapExtensionTypeElement.cs
- MimeTypePropertyAttribute.cs
- AppSettingsReader.cs
- OletxTransactionManager.cs
- ToolStripSeparatorRenderEventArgs.cs
- Int32Rect.cs
- DbParameterHelper.cs
- X509ClientCertificateAuthentication.cs
- UriSection.cs
- DeviceContext2.cs
- DrawingBrush.cs
- dataobject.cs
- BooleanExpr.cs
- BinaryExpressionHelper.cs
- ErrorFormatterPage.cs
- ApplicationSecurityManager.cs
- VirtualDirectoryMappingCollection.cs
- CompilationSection.cs
- EtwProvider.cs
- RequestDescription.cs
- TableCellsCollectionEditor.cs
- DataGridColumnHeadersPresenter.cs
- TreeViewHitTestInfo.cs
- MatrixConverter.cs
- XmlReflectionImporter.cs
- DelegateBodyWriter.cs
- HandlerBase.cs
- CngProvider.cs
- Double.cs
- PolicyValidationException.cs
- StrokeNodeData.cs
- VersionedStreamOwner.cs
- DataViewManager.cs
- RealizationContext.cs
- Metadata.cs
- OleDbSchemaGuid.cs
- SqlInternalConnectionSmi.cs
- XmlSchemaInferenceException.cs
- GroupStyle.cs
- IIS7WorkerRequest.cs
- GridViewCellAutomationPeer.cs
- PrePrepareMethodAttribute.cs
- NameValueFileSectionHandler.cs
- HttpResponseInternalWrapper.cs
- QilInvokeLateBound.cs
- WorkflowItemPresenter.cs
- IntranetCredentialPolicy.cs
- DockingAttribute.cs
- Separator.cs
- ResumeStoryboard.cs
- CorrelationManager.cs
- InfoCardAsymmetricCrypto.cs
- Substitution.cs
- HttpWebResponse.cs
- RequestContext.cs
- CompareValidator.cs
- DynamicILGenerator.cs
- DataGridViewCellStateChangedEventArgs.cs
- RegionInfo.cs
- NetworkCredential.cs
- QilList.cs
- TreeNodeBindingCollection.cs
- EdmValidator.cs
- OleDbParameterCollection.cs
- BinaryObjectReader.cs
- MulticastNotSupportedException.cs
- ResourcePool.cs
- TableCell.cs