Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataWeb / Client / System / Data / Services / Client / ALinq / DataServiceExpressionVisitor.cs / 1 / DataServiceExpressionVisitor.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // //// Expression Visitors for Linq to URI translator // // // @owner [....] //--------------------------------------------------------------------- namespace System.Data.Services.Client { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Linq.Expressions; using System.Diagnostics; ////// Specific Vistior base class for the DataServiceQueryProvider. /// internal abstract class DataServiceExpressionVisitor : ExpressionVisitor { ////// 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.CustomQueryOptions); } 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.ExpandPaths, npse.CustomQueryOptions); } 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) { if (ire == null) { return null; } 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 { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Linq.Expressions; using System.Diagnostics; ////// Specific Vistior base class for the DataServiceQueryProvider. /// internal abstract class DataServiceExpressionVisitor : ExpressionVisitor { ////// 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.CustomQueryOptions); } 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.ExpandPaths, npse.CustomQueryOptions); } 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) { if (ire == null) { return null; } 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
- DiscoveryRequestHandler.cs
- PolyBezierSegment.cs
- FileDetails.cs
- RoutingEndpointTrait.cs
- XmlAnyElementAttribute.cs
- WebPartConnectionsConfigureVerb.cs
- DataControlFieldHeaderCell.cs
- AnnotationHighlightLayer.cs
- FontNamesConverter.cs
- TraceUtility.cs
- TileBrush.cs
- TextContainer.cs
- XamlLoadErrorInfo.cs
- SafeFindHandle.cs
- AnnotationAdorner.cs
- BitmapEffectCollection.cs
- HandlerFactoryWrapper.cs
- TraceLevelStore.cs
- CodeDOMUtility.cs
- EntityContainerEmitter.cs
- RijndaelManagedTransform.cs
- PeerCredentialElement.cs
- TypeGeneratedEventArgs.cs
- Tuple.cs
- BinaryMethodMessage.cs
- DataGridViewElement.cs
- ClientSettings.cs
- CallbackHandler.cs
- RegisteredArrayDeclaration.cs
- FileDialogCustomPlacesCollection.cs
- DesignerVerbCollection.cs
- DropShadowBitmapEffect.cs
- Fx.cs
- TagPrefixCollection.cs
- RegexMatchCollection.cs
- EdmEntityTypeAttribute.cs
- ApplySecurityAndSendAsyncResult.cs
- OciLobLocator.cs
- BackgroundFormatInfo.cs
- EntityDataSourceWizardForm.cs
- PipeStream.cs
- EntityViewGenerationAttribute.cs
- ListBoxItemAutomationPeer.cs
- SqlCharStream.cs
- MarshalByValueComponent.cs
- VisualBasicReference.cs
- Context.cs
- Annotation.cs
- DotExpr.cs
- HtmlShim.cs
- HtmlSelectionListAdapter.cs
- ExpandoObject.cs
- CfgRule.cs
- SelectionEditor.cs
- SqlTypeConverter.cs
- EntityViewGenerator.cs
- DispatcherEventArgs.cs
- RuleRefElement.cs
- MarginCollapsingState.cs
- XmlDictionary.cs
- Transform.cs
- Config.cs
- XPathNavigator.cs
- HttpModulesSection.cs
- WebPartTransformerCollection.cs
- OneOfTypeConst.cs
- ChildDocumentBlock.cs
- RegexCapture.cs
- SynchronousSendBindingElement.cs
- ListBoxItem.cs
- OneOfTypeConst.cs
- Cursors.cs
- EntityChangedParams.cs
- CatalogZoneBase.cs
- WinFormsSecurity.cs
- GlobalizationAssembly.cs
- Substitution.cs
- xamlnodes.cs
- EventLogPermissionEntryCollection.cs
- ScriptingWebServicesSectionGroup.cs
- ComplexLine.cs
- IOThreadScheduler.cs
- ToolStripOverflow.cs
- PictureBox.cs
- ToolStripControlHost.cs
- WsdlBuildProvider.cs
- WebPartConnection.cs
- ControlType.cs
- ClientSettings.cs
- CircleHotSpot.cs
- AuthorizationRuleCollection.cs
- CodeCatchClause.cs
- GZipStream.cs
- BlurEffect.cs
- TextContainerChangedEventArgs.cs
- AvtEvent.cs
- Int64Storage.cs
- WindowsToolbar.cs
- ThemeableAttribute.cs
- FontDifferentiator.cs