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
- BigInt.cs
- DESCryptoServiceProvider.cs
- FontStretchConverter.cs
- SwitchAttribute.cs
- Rect3D.cs
- StorageEntityContainerMapping.cs
- XmlCustomFormatter.cs
- hresults.cs
- BamlLocalizableResource.cs
- StrokeCollectionConverter.cs
- TextSelectionProcessor.cs
- NetworkCredential.cs
- FileUpload.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- ADMembershipProvider.cs
- PropertyToken.cs
- InternalControlCollection.cs
- UInt16Storage.cs
- SatelliteContractVersionAttribute.cs
- FontDifferentiator.cs
- IPEndPoint.cs
- HttpErrorTraceRecord.cs
- BamlWriter.cs
- WebPartZoneDesigner.cs
- ConcurrencyBehavior.cs
- SettingsBindableAttribute.cs
- SimpleType.cs
- ProxyAttribute.cs
- RelationshipNavigation.cs
- _OSSOCK.cs
- BrushMappingModeValidation.cs
- DataGridViewAutoSizeModeEventArgs.cs
- IEnumerable.cs
- ValueChangedEventManager.cs
- WizardPanelChangingEventArgs.cs
- loginstatus.cs
- WebPartConnectionsCancelVerb.cs
- SymLanguageType.cs
- StylusPointPropertyInfoDefaults.cs
- PageStatePersister.cs
- XPathArrayIterator.cs
- EditorPartDesigner.cs
- GacUtil.cs
- PrimarySelectionGlyph.cs
- MergePropertyDescriptor.cs
- AxHost.cs
- MetaChildrenColumn.cs
- ListenerElementsCollection.cs
- VirtualDirectoryMappingCollection.cs
- WebPartMinimizeVerb.cs
- EnvelopedPkcs7.cs
- ValueProviderWrapper.cs
- PageCatalogPart.cs
- InvalidateEvent.cs
- XamlStream.cs
- AdornerHitTestResult.cs
- Brush.cs
- _ProxyChain.cs
- Native.cs
- StylusEventArgs.cs
- InlineUIContainer.cs
- RectangleHotSpot.cs
- HostedElements.cs
- EntityDataReader.cs
- DataGridViewColumnStateChangedEventArgs.cs
- XmlSequenceWriter.cs
- UnmanagedBitmapWrapper.cs
- DirectionalLight.cs
- HierarchicalDataSourceIDConverter.cs
- Constraint.cs
- AccessKeyManager.cs
- XXXOnTypeBuilderInstantiation.cs
- EventSourceCreationData.cs
- ConsumerConnectionPoint.cs
- ValueUtilsSmi.cs
- StatusBarPanel.cs
- SqlNotificationEventArgs.cs
- BrowserCapabilitiesFactoryBase.cs
- SafeNativeMethodsMilCoreApi.cs
- InputScopeConverter.cs
- ConfigXmlElement.cs
- Point3DCollection.cs
- AssemblyAssociatedContentFileAttribute.cs
- WebRequest.cs
- ItemDragEvent.cs
- DecoderReplacementFallback.cs
- path.cs
- HierarchicalDataBoundControl.cs
- LinkedDataMemberFieldEditor.cs
- WebConfigManager.cs
- DataGridViewTopRowAccessibleObject.cs
- HttpRequestTraceRecord.cs
- FixedSOMPageConstructor.cs
- GACMembershipCondition.cs
- CryptographicAttribute.cs
- Rijndael.cs
- CompModSwitches.cs
- QilTargetType.cs
- Enumerable.cs
- CodeComment.cs