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
- TabPage.cs
- ArrangedElementCollection.cs
- DocumentStream.cs
- ProfileParameter.cs
- BatchWriter.cs
- GridView.cs
- SapiAttributeParser.cs
- Timeline.cs
- RuleElement.cs
- UriTemplateMatch.cs
- GridViewSortEventArgs.cs
- FormCollection.cs
- SQLUtility.cs
- ColumnMapCopier.cs
- ValidationEventArgs.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- ManualResetEvent.cs
- ChtmlTextWriter.cs
- _ListenerRequestStream.cs
- SkewTransform.cs
- ServiceObjectContainer.cs
- TakeQueryOptionExpression.cs
- EntryPointNotFoundException.cs
- GAC.cs
- BreakSafeBase.cs
- ArrayMergeHelper.cs
- DispatcherOperation.cs
- webeventbuffer.cs
- SplitterPanel.cs
- System.Data.OracleClient_BID.cs
- CodeDomComponentSerializationService.cs
- DataGridItemAttachedStorage.cs
- DataGridViewToolTip.cs
- DataGridCellsPanel.cs
- GridLength.cs
- TraceHandlerErrorFormatter.cs
- TypeElement.cs
- SafeNativeMethods.cs
- altserialization.cs
- MsmqBindingBase.cs
- WindowsListViewScroll.cs
- AdjustableArrowCap.cs
- ProcessModule.cs
- DataGridItemCollection.cs
- DataGridViewImageCell.cs
- TextParagraphCache.cs
- CodeTypeReferenceCollection.cs
- BinaryConverter.cs
- XmlSchemaSubstitutionGroup.cs
- DispatcherEventArgs.cs
- FunctionQuery.cs
- RSACryptoServiceProvider.cs
- HostingEnvironment.cs
- XmlNodeChangedEventArgs.cs
- ObjectParameter.cs
- BaseWebProxyFinder.cs
- SpellerError.cs
- WmlImageAdapter.cs
- SerializerProvider.cs
- PrintDialog.cs
- OleDbCommandBuilder.cs
- HttpCachePolicyElement.cs
- OleDbEnumerator.cs
- TreeNodeSelectionProcessor.cs
- SamlAssertion.cs
- XmlDesignerDataSourceView.cs
- ColumnCollection.cs
- WindowHelperService.cs
- CatalogZoneDesigner.cs
- HttpResponseHeader.cs
- ArgumentFixer.cs
- AutomationPattern.cs
- Mutex.cs
- BinaryFormatter.cs
- SafeNativeMethods.cs
- MergablePropertyAttribute.cs
- DataViewManager.cs
- ReadContentAsBinaryHelper.cs
- _ScatterGatherBuffers.cs
- Win32SafeHandles.cs
- XdrBuilder.cs
- CustomValidator.cs
- ScriptRegistrationManager.cs
- XmlSchemaDocumentation.cs
- AttributeQuery.cs
- IndexedGlyphRun.cs
- ProgressBarBrushConverter.cs
- AuthenticationModuleElement.cs
- ItemsPresenter.cs
- WindowsScrollBar.cs
- ToggleButton.cs
- Assembly.cs
- RequestCachePolicy.cs
- IndentedWriter.cs
- RemotingHelper.cs
- DesignerActionPropertyItem.cs
- SchemeSettingElement.cs
- EntityDataSourceChangedEventArgs.cs
- ActivationArguments.cs
- ListViewSelectEventArgs.cs