Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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 , producing a new InputReferenceExpression
/// based on the visited form of the that is referenced by
/// the InputReferenceExpression argument, .
///
/// InputReferenceExpression expression to visit
/// 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 , producing a new InputReferenceExpression
/// based on the visited form of the that is referenced by
/// the InputReferenceExpression argument, .
///
/// InputReferenceExpression expression to visit
/// 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
- _Win32.cs
- LineSegment.cs
- CollectionAdapters.cs
- PenContext.cs
- RelationshipEntry.cs
- CodeActivityMetadata.cs
- ProcessModule.cs
- MULTI_QI.cs
- ColorInterpolationModeValidation.cs
- HwndAppCommandInputProvider.cs
- backend.cs
- DelegatingHeader.cs
- DataSourceGroupCollection.cs
- CompensatableTransactionScopeActivity.cs
- HttpRequest.cs
- TextFindEngine.cs
- SecurityDocument.cs
- SqlConnectionPoolProviderInfo.cs
- QueryModel.cs
- BmpBitmapEncoder.cs
- XomlSerializationHelpers.cs
- AmbientLight.cs
- GridViewEditEventArgs.cs
- ColumnCollectionEditor.cs
- ParameterBuilder.cs
- ClearCollection.cs
- DropTarget.cs
- Dictionary.cs
- Tag.cs
- DataGridSortCommandEventArgs.cs
- CompiledXpathExpr.cs
- WindowsGraphics.cs
- GrammarBuilder.cs
- ViewGenResults.cs
- FontUnit.cs
- CachingHintValidation.cs
- XmlCharType.cs
- TypeConverter.cs
- DictionaryEntry.cs
- WindowsStreamSecurityElement.cs
- DataServiceRequest.cs
- DnsPermission.cs
- BaseUriHelper.cs
- ProfileInfo.cs
- SortedSetDebugView.cs
- ClosureBinding.cs
- AddInToken.cs
- assertwrapper.cs
- KeyGesture.cs
- LinkButton.cs
- StorageInfo.cs
- AutomationPropertyInfo.cs
- XXXInfos.cs
- OrderPreservingSpoolingTask.cs
- ElementUtil.cs
- _MultipleConnectAsync.cs
- WebMessageFormatHelper.cs
- CachedFontFamily.cs
- SmiEventSink_DeferedProcessing.cs
- XNodeNavigator.cs
- XDeferredAxisSource.cs
- FixedDocumentSequencePaginator.cs
- CheckPair.cs
- DefaultAssemblyResolver.cs
- ServiceAuthorizationManager.cs
- WebPartCatalogAddVerb.cs
- FacetDescriptionElement.cs
- sqlinternaltransaction.cs
- PeerContact.cs
- FixedTextContainer.cs
- GradientBrush.cs
- DataSourceHelper.cs
- LinqDataSourceStatusEventArgs.cs
- SamlConstants.cs
- HTTPNotFoundHandler.cs
- UnsafeNativeMethods.cs
- ServerIdentity.cs
- _SingleItemRequestCache.cs
- SqlCharStream.cs
- DataRecordObjectView.cs
- AtlasWeb.Designer.cs
- ServiceModelEnhancedConfigurationElementCollection.cs
- TypeUtils.cs
- Int32CollectionValueSerializer.cs
- RequestDescription.cs
- HtmlTernaryTree.cs
- MethodMessage.cs
- ITextView.cs
- HeaderPanel.cs
- MetadataCollection.cs
- _HTTPDateParse.cs
- HostProtectionException.cs
- XmlSchemaSubstitutionGroup.cs
- FillRuleValidation.cs
- UniqueEventHelper.cs
- ContextBase.cs
- CharEntityEncoderFallback.cs
- FontFamilyValueSerializer.cs
- StateBag.cs
- XmlCountingReader.cs