Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataWeb / Client / System / Data / Services / Client / ALinq / UriWriter.cs / 3 / UriWriter.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Translates resource bound expression trees into URIs.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services.Client
{
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Linq;
using System.Linq.Expressions;
using System.Xml;
///
/// Translates resource bound expression trees into URIs.
///
internal class UriWriter : DataServiceExpressionVisitor
{
/// Data context used to generate type names for types.
private readonly DataServiceContext context;
/// stringbuilder for constructed URI
private readonly StringBuilder uriBuilder;
///
/// Private constructor for creating UriWriter
///
/// Data context used to generate type names for types.
private UriWriter(DataServiceContext context)
{
Debug.Assert(context != null, "context != null");
this.context = context;
this.uriBuilder = new StringBuilder();
}
///
/// Translates resource bound expression tree to a URI.
///
/// Data context used to generate type names for types.
/// The expression to translate
/// Uri as a string
internal static string Translate(DataServiceContext context, Expression e)
{
var writer = new UriWriter(context);
writer.Visit(e);
return writer.uriBuilder.ToString();
}
///
/// MethodCallExpression visit method
///
/// The MethodCallExpression expression to visit
/// The visited MethodCallExpression expression
internal override Expression VisitMethodCall(MethodCallExpression m)
{
throw Error.MethodNotSupported(m);
}
///
/// UnaryExpression visit method
///
/// The UnaryExpression expression to visit
/// The visited UnaryExpression expression
internal override Expression VisitUnary(UnaryExpression u)
{
throw new NotSupportedException(Strings.ALinq_UnaryNotSupported(u.NodeType.ToString()));
}
///
/// BinaryExpression visit method
///
/// The BinaryExpression expression to visit
/// The visited BinaryExpression expression
internal override Expression VisitBinary(BinaryExpression b)
{
throw new NotSupportedException(Strings.ALinq_BinaryNotSupported(b.NodeType.ToString()));
}
///
/// ConstantExpression visit method
///
/// The ConstantExpression expression to visit
/// The visited ConstantExpression expression
internal override Expression VisitConstant(ConstantExpression c)
{
throw new NotSupportedException(Strings.ALinq_ConstantNotSupported(c.Value));
}
///
/// TypeBinaryExpression visit method
///
/// The TypeBinaryExpression expression to visit
/// The visited TypeBinaryExpression expression
internal override Expression VisitTypeIs(TypeBinaryExpression b)
{
throw new NotSupportedException(Strings.ALinq_TypeBinaryNotSupported);
}
///
/// ConditionalExpression visit method
///
/// The ConditionalExpression expression to visit
/// The visited ConditionalExpression expression
internal override Expression VisitConditional(ConditionalExpression c)
{
throw new NotSupportedException(Strings.ALinq_ConditionalNotSupported);
}
///
/// ParameterExpression visit method
///
/// The ParameterExpression expression to visit
/// The visited ParameterExpression expression
internal override Expression VisitParameter(ParameterExpression p)
{
throw new NotSupportedException(Strings.ALinq_ParameterNotSupported);
}
///
/// MemberExpression visit method
///
/// The MemberExpression expression to visit
/// The visited MemberExpression expression
internal override Expression VisitMemberAccess(MemberExpression m)
{
throw new NotSupportedException(Strings.ALinq_MemberAccessNotSupported(m.Member.Name));
}
///
/// LambdaExpression visit method
///
/// The LambdaExpression to visit
/// The visited LambdaExpression
internal override Expression VisitLambda(LambdaExpression lambda)
{
throw new NotSupportedException(Strings.ALinq_LambdaNotSupported);
}
///
/// NewExpression visit method
///
/// The NewExpression to visit
/// The visited NewExpression
internal override NewExpression VisitNew(NewExpression nex)
{
throw new NotSupportedException(Strings.ALinq_NewNotSupported);
}
///
/// MemberInitExpression visit method
///
/// The MemberInitExpression to visit
/// The visited MemberInitExpression
internal override Expression VisitMemberInit(MemberInitExpression init)
{
throw new NotSupportedException(Strings.ALinq_MemberInitNotSupported);
}
///
/// ListInitExpression visit method
///
/// The ListInitExpression to visit
/// The visited ListInitExpression
internal override Expression VisitListInit(ListInitExpression init)
{
throw new NotSupportedException(Strings.ALinq_ListInitNotSupported);
}
///
/// NewArrayExpression visit method
///
/// The NewArrayExpression to visit
/// The visited NewArrayExpression
internal override Expression VisitNewArray(NewArrayExpression na)
{
throw new NotSupportedException(Strings.ALinq_NewArrayNotSupported);
}
///
/// InvocationExpression visit method
///
/// The InvocationExpression to visit
/// The visited InvocationExpression
internal override Expression VisitInvocation(InvocationExpression iv)
{
throw new NotSupportedException(Strings.ALinq_InvocationNotSupported);
}
///
/// NavigationPropertySingletonExpression visit method.
///
/// NavigationPropertySingletonExpression expression to visit
/// Visited NavigationPropertySingletonExpression expression
internal override Expression VisitNavigationPropertySingletonExpression(NavigationPropertySingletonExpression npse)
{
this.Visit(npse.Source);
this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append(this.ExpressionToString(npse.MemberExpression));
this.VisitQueryOptions(npse);
return npse;
}
///
/// ResourceSetExpression visit method.
///
/// ResourceSetExpression expression to visit
/// Visited ResourceSetExpression expression
internal override Expression VisitResourceSetExpression(ResourceSetExpression rse)
{
if ((ResourceExpressionType)rse.NodeType == ResourceExpressionType.ResourceNavigationProperty)
{
this.Visit(rse.Source);
this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append(this.ExpressionToString(rse.MemberExpression));
}
else
{
this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append((string)((ConstantExpression)rse.MemberExpression).Value);
}
if (rse.KeyPredicate != null)
{
this.uriBuilder.Append(UriHelper.LEFTPAREN);
if (rse.KeyPredicate.Count == 1)
{
this.uriBuilder.Append(this.ExpressionToString(rse.KeyPredicate.Values.First()));
}
else
{
bool addComma = false;
foreach (var kvp in rse.KeyPredicate)
{
if (addComma)
{
this.uriBuilder.Append(UriHelper.COMMA);
}
this.uriBuilder.Append(kvp.Key.Name);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
this.uriBuilder.Append(this.ExpressionToString(kvp.Value));
addComma = true;
}
}
this.uriBuilder.Append(UriHelper.RIGHTPAREN);
}
else if (rse.IsLeafResource)
{
// if resourceset is on the leaf, append ()
this.uriBuilder.Append(UriHelper.LEFTPAREN);
this.uriBuilder.Append(UriHelper.RIGHTPAREN);
}
this.VisitQueryOptions(rse);
return rse;
}
///
/// Visit Query options for Resource
///
/// Resource Expression with query options
internal void VisitQueryOptions(ResourceExpression re)
{
bool needAmpersand = false;
if (re.HasQueryOptions)
{
this.uriBuilder.Append(UriHelper.QUESTIONMARK);
ResourceSetExpression rse = re as ResourceSetExpression;
if (rse != null && rse.HasSequenceQueryOptions)
{
needAmpersand = true;
IEnumerator options = rse.SequenceQueryOptions.GetEnumerator();
options.MoveNext();
while (true)
{
Expression e = ((Expression)options.Current);
ResourceExpressionType et = (ResourceExpressionType)e.NodeType;
switch (et)
{
case ResourceExpressionType.SkipQueryOption:
this.VisitQueryOptionExpression((SkipQueryOptionExpression)e);
break;
case ResourceExpressionType.TakeQueryOption:
this.VisitQueryOptionExpression((TakeQueryOptionExpression)e);
break;
case ResourceExpressionType.OrderByQueryOption:
this.VisitQueryOptionExpression((OrderByQueryOptionExpression)e);
break;
case ResourceExpressionType.FilterQueryOption:
this.VisitQueryOptionExpression((FilterQueryOptionExpression)e);
break;
default:
Debug.Assert(false, "Unexpected expression type " + (int)et);
break;
}
if (!options.MoveNext())
{
break;
}
this.uriBuilder.Append(UriHelper.AMPERSAND);
}
}
if (re.ExpandPaths.Count > 0)
{
if (needAmpersand)
{
this.uriBuilder.Append(UriHelper.AMPERSAND);
}
this.VisitExpandOptions(re.ExpandPaths);
needAmpersand = true;
}
if (re.CustomQueryOptions.Count > 0)
{
if (needAmpersand)
{
this.uriBuilder.Append(UriHelper.AMPERSAND);
}
this.VisitCustomQueryOptions(re.CustomQueryOptions);
needAmpersand = true;
}
}
}
///
/// SkipQueryOptionExpression visit method.
///
/// SkipQueryOptionExpression expression to visit
internal void VisitQueryOptionExpression(SkipQueryOptionExpression sqoe)
{
this.uriBuilder.Append(UriHelper.DOLLARSIGN);
this.uriBuilder.Append(UriHelper.OPTIONSKIP);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
this.uriBuilder.Append(this.ExpressionToString(sqoe.SkipAmount));
}
///
/// TakeQueryOptionExpression visit method.
///
/// TakeQueryOptionExpression expression to visit
internal void VisitQueryOptionExpression(TakeQueryOptionExpression tqoe)
{
this.uriBuilder.Append(UriHelper.DOLLARSIGN);
this.uriBuilder.Append(UriHelper.OPTIONTOP);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
this.uriBuilder.Append(this.ExpressionToString(tqoe.TakeAmount));
}
///
/// FilterQueryOptionExpression visit method.
///
/// FilterQueryOptionExpression expression to visit
internal void VisitQueryOptionExpression(FilterQueryOptionExpression fqoe)
{
this.uriBuilder.Append(UriHelper.DOLLARSIGN);
this.uriBuilder.Append(UriHelper.OPTIONFILTER);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
this.uriBuilder.Append(this.ExpressionToString(fqoe.Predicate));
}
///
/// OrderByQueryOptionExpression visit method.
///
/// OrderByQueryOptionExpression expression to visit
internal void VisitQueryOptionExpression(OrderByQueryOptionExpression oboe)
{
this.uriBuilder.Append(UriHelper.DOLLARSIGN);
this.uriBuilder.Append(UriHelper.OPTIONORDERBY);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
int ii = 0;
while (true)
{
var selector = oboe.Selectors[ii];
this.uriBuilder.Append(this.ExpressionToString(selector.Expression));
if (selector.Descending)
{
this.uriBuilder.Append(UriHelper.SPACE);
this.uriBuilder.Append(UriHelper.OPTIONDESC);
}
if (++ii == oboe.Selectors.Count)
{
break;
}
this.uriBuilder.Append(UriHelper.COMMA);
}
}
///
/// VisitExpandOptions visit method.
///
/// Expand Paths
internal void VisitExpandOptions(List paths)
{
this.uriBuilder.Append(UriHelper.DOLLARSIGN);
this.uriBuilder.Append(UriHelper.OPTIONEXPAND);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
int ii = 0;
while (true)
{
ConstantExpression path = paths[ii];
this.uriBuilder.Append(path.Value);
if (++ii == paths.Count)
{
break;
}
this.uriBuilder.Append(UriHelper.COMMA);
}
}
///
/// VisitCustomQueryOptions visit method.
///
/// Custom query options
internal void VisitCustomQueryOptions(Dictionary options)
{
List keys = options.Keys.ToList();
List values = options.Values.ToList();
int ii = 0;
while (true)
{
this.uriBuilder.Append(keys[ii].Value);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
this.uriBuilder.Append(values[ii].Value);
if (++ii == keys.Count)
{
break;
}
this.uriBuilder.Append(UriHelper.AMPERSAND);
}
}
/// Serializes an expression to a string.
/// Expression to serialize
/// The serialized expression.
private string ExpressionToString(Expression expression)
{
return ExpressionWriter.ExpressionToString(this.context, expression);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Translates resource bound expression trees into URIs.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services.Client
{
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Linq;
using System.Linq.Expressions;
using System.Xml;
///
/// Translates resource bound expression trees into URIs.
///
internal class UriWriter : DataServiceExpressionVisitor
{
/// Data context used to generate type names for types.
private readonly DataServiceContext context;
/// stringbuilder for constructed URI
private readonly StringBuilder uriBuilder;
///
/// Private constructor for creating UriWriter
///
/// Data context used to generate type names for types.
private UriWriter(DataServiceContext context)
{
Debug.Assert(context != null, "context != null");
this.context = context;
this.uriBuilder = new StringBuilder();
}
///
/// Translates resource bound expression tree to a URI.
///
/// Data context used to generate type names for types.
/// The expression to translate
/// Uri as a string
internal static string Translate(DataServiceContext context, Expression e)
{
var writer = new UriWriter(context);
writer.Visit(e);
return writer.uriBuilder.ToString();
}
///
/// MethodCallExpression visit method
///
/// The MethodCallExpression expression to visit
/// The visited MethodCallExpression expression
internal override Expression VisitMethodCall(MethodCallExpression m)
{
throw Error.MethodNotSupported(m);
}
///
/// UnaryExpression visit method
///
/// The UnaryExpression expression to visit
/// The visited UnaryExpression expression
internal override Expression VisitUnary(UnaryExpression u)
{
throw new NotSupportedException(Strings.ALinq_UnaryNotSupported(u.NodeType.ToString()));
}
///
/// BinaryExpression visit method
///
/// The BinaryExpression expression to visit
/// The visited BinaryExpression expression
internal override Expression VisitBinary(BinaryExpression b)
{
throw new NotSupportedException(Strings.ALinq_BinaryNotSupported(b.NodeType.ToString()));
}
///
/// ConstantExpression visit method
///
/// The ConstantExpression expression to visit
/// The visited ConstantExpression expression
internal override Expression VisitConstant(ConstantExpression c)
{
throw new NotSupportedException(Strings.ALinq_ConstantNotSupported(c.Value));
}
///
/// TypeBinaryExpression visit method
///
/// The TypeBinaryExpression expression to visit
/// The visited TypeBinaryExpression expression
internal override Expression VisitTypeIs(TypeBinaryExpression b)
{
throw new NotSupportedException(Strings.ALinq_TypeBinaryNotSupported);
}
///
/// ConditionalExpression visit method
///
/// The ConditionalExpression expression to visit
/// The visited ConditionalExpression expression
internal override Expression VisitConditional(ConditionalExpression c)
{
throw new NotSupportedException(Strings.ALinq_ConditionalNotSupported);
}
///
/// ParameterExpression visit method
///
/// The ParameterExpression expression to visit
/// The visited ParameterExpression expression
internal override Expression VisitParameter(ParameterExpression p)
{
throw new NotSupportedException(Strings.ALinq_ParameterNotSupported);
}
///
/// MemberExpression visit method
///
/// The MemberExpression expression to visit
/// The visited MemberExpression expression
internal override Expression VisitMemberAccess(MemberExpression m)
{
throw new NotSupportedException(Strings.ALinq_MemberAccessNotSupported(m.Member.Name));
}
///
/// LambdaExpression visit method
///
/// The LambdaExpression to visit
/// The visited LambdaExpression
internal override Expression VisitLambda(LambdaExpression lambda)
{
throw new NotSupportedException(Strings.ALinq_LambdaNotSupported);
}
///
/// NewExpression visit method
///
/// The NewExpression to visit
/// The visited NewExpression
internal override NewExpression VisitNew(NewExpression nex)
{
throw new NotSupportedException(Strings.ALinq_NewNotSupported);
}
///
/// MemberInitExpression visit method
///
/// The MemberInitExpression to visit
/// The visited MemberInitExpression
internal override Expression VisitMemberInit(MemberInitExpression init)
{
throw new NotSupportedException(Strings.ALinq_MemberInitNotSupported);
}
///
/// ListInitExpression visit method
///
/// The ListInitExpression to visit
/// The visited ListInitExpression
internal override Expression VisitListInit(ListInitExpression init)
{
throw new NotSupportedException(Strings.ALinq_ListInitNotSupported);
}
///
/// NewArrayExpression visit method
///
/// The NewArrayExpression to visit
/// The visited NewArrayExpression
internal override Expression VisitNewArray(NewArrayExpression na)
{
throw new NotSupportedException(Strings.ALinq_NewArrayNotSupported);
}
///
/// InvocationExpression visit method
///
/// The InvocationExpression to visit
/// The visited InvocationExpression
internal override Expression VisitInvocation(InvocationExpression iv)
{
throw new NotSupportedException(Strings.ALinq_InvocationNotSupported);
}
///
/// NavigationPropertySingletonExpression visit method.
///
/// NavigationPropertySingletonExpression expression to visit
/// Visited NavigationPropertySingletonExpression expression
internal override Expression VisitNavigationPropertySingletonExpression(NavigationPropertySingletonExpression npse)
{
this.Visit(npse.Source);
this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append(this.ExpressionToString(npse.MemberExpression));
this.VisitQueryOptions(npse);
return npse;
}
///
/// ResourceSetExpression visit method.
///
/// ResourceSetExpression expression to visit
/// Visited ResourceSetExpression expression
internal override Expression VisitResourceSetExpression(ResourceSetExpression rse)
{
if ((ResourceExpressionType)rse.NodeType == ResourceExpressionType.ResourceNavigationProperty)
{
this.Visit(rse.Source);
this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append(this.ExpressionToString(rse.MemberExpression));
}
else
{
this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append((string)((ConstantExpression)rse.MemberExpression).Value);
}
if (rse.KeyPredicate != null)
{
this.uriBuilder.Append(UriHelper.LEFTPAREN);
if (rse.KeyPredicate.Count == 1)
{
this.uriBuilder.Append(this.ExpressionToString(rse.KeyPredicate.Values.First()));
}
else
{
bool addComma = false;
foreach (var kvp in rse.KeyPredicate)
{
if (addComma)
{
this.uriBuilder.Append(UriHelper.COMMA);
}
this.uriBuilder.Append(kvp.Key.Name);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
this.uriBuilder.Append(this.ExpressionToString(kvp.Value));
addComma = true;
}
}
this.uriBuilder.Append(UriHelper.RIGHTPAREN);
}
else if (rse.IsLeafResource)
{
// if resourceset is on the leaf, append ()
this.uriBuilder.Append(UriHelper.LEFTPAREN);
this.uriBuilder.Append(UriHelper.RIGHTPAREN);
}
this.VisitQueryOptions(rse);
return rse;
}
///
/// Visit Query options for Resource
///
/// Resource Expression with query options
internal void VisitQueryOptions(ResourceExpression re)
{
bool needAmpersand = false;
if (re.HasQueryOptions)
{
this.uriBuilder.Append(UriHelper.QUESTIONMARK);
ResourceSetExpression rse = re as ResourceSetExpression;
if (rse != null && rse.HasSequenceQueryOptions)
{
needAmpersand = true;
IEnumerator options = rse.SequenceQueryOptions.GetEnumerator();
options.MoveNext();
while (true)
{
Expression e = ((Expression)options.Current);
ResourceExpressionType et = (ResourceExpressionType)e.NodeType;
switch (et)
{
case ResourceExpressionType.SkipQueryOption:
this.VisitQueryOptionExpression((SkipQueryOptionExpression)e);
break;
case ResourceExpressionType.TakeQueryOption:
this.VisitQueryOptionExpression((TakeQueryOptionExpression)e);
break;
case ResourceExpressionType.OrderByQueryOption:
this.VisitQueryOptionExpression((OrderByQueryOptionExpression)e);
break;
case ResourceExpressionType.FilterQueryOption:
this.VisitQueryOptionExpression((FilterQueryOptionExpression)e);
break;
default:
Debug.Assert(false, "Unexpected expression type " + (int)et);
break;
}
if (!options.MoveNext())
{
break;
}
this.uriBuilder.Append(UriHelper.AMPERSAND);
}
}
if (re.ExpandPaths.Count > 0)
{
if (needAmpersand)
{
this.uriBuilder.Append(UriHelper.AMPERSAND);
}
this.VisitExpandOptions(re.ExpandPaths);
needAmpersand = true;
}
if (re.CustomQueryOptions.Count > 0)
{
if (needAmpersand)
{
this.uriBuilder.Append(UriHelper.AMPERSAND);
}
this.VisitCustomQueryOptions(re.CustomQueryOptions);
needAmpersand = true;
}
}
}
///
/// SkipQueryOptionExpression visit method.
///
/// SkipQueryOptionExpression expression to visit
internal void VisitQueryOptionExpression(SkipQueryOptionExpression sqoe)
{
this.uriBuilder.Append(UriHelper.DOLLARSIGN);
this.uriBuilder.Append(UriHelper.OPTIONSKIP);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
this.uriBuilder.Append(this.ExpressionToString(sqoe.SkipAmount));
}
///
/// TakeQueryOptionExpression visit method.
///
/// TakeQueryOptionExpression expression to visit
internal void VisitQueryOptionExpression(TakeQueryOptionExpression tqoe)
{
this.uriBuilder.Append(UriHelper.DOLLARSIGN);
this.uriBuilder.Append(UriHelper.OPTIONTOP);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
this.uriBuilder.Append(this.ExpressionToString(tqoe.TakeAmount));
}
///
/// FilterQueryOptionExpression visit method.
///
/// FilterQueryOptionExpression expression to visit
internal void VisitQueryOptionExpression(FilterQueryOptionExpression fqoe)
{
this.uriBuilder.Append(UriHelper.DOLLARSIGN);
this.uriBuilder.Append(UriHelper.OPTIONFILTER);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
this.uriBuilder.Append(this.ExpressionToString(fqoe.Predicate));
}
///
/// OrderByQueryOptionExpression visit method.
///
/// OrderByQueryOptionExpression expression to visit
internal void VisitQueryOptionExpression(OrderByQueryOptionExpression oboe)
{
this.uriBuilder.Append(UriHelper.DOLLARSIGN);
this.uriBuilder.Append(UriHelper.OPTIONORDERBY);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
int ii = 0;
while (true)
{
var selector = oboe.Selectors[ii];
this.uriBuilder.Append(this.ExpressionToString(selector.Expression));
if (selector.Descending)
{
this.uriBuilder.Append(UriHelper.SPACE);
this.uriBuilder.Append(UriHelper.OPTIONDESC);
}
if (++ii == oboe.Selectors.Count)
{
break;
}
this.uriBuilder.Append(UriHelper.COMMA);
}
}
///
/// VisitExpandOptions visit method.
///
/// Expand Paths
internal void VisitExpandOptions(List paths)
{
this.uriBuilder.Append(UriHelper.DOLLARSIGN);
this.uriBuilder.Append(UriHelper.OPTIONEXPAND);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
int ii = 0;
while (true)
{
ConstantExpression path = paths[ii];
this.uriBuilder.Append(path.Value);
if (++ii == paths.Count)
{
break;
}
this.uriBuilder.Append(UriHelper.COMMA);
}
}
///
/// VisitCustomQueryOptions visit method.
///
/// Custom query options
internal void VisitCustomQueryOptions(Dictionary options)
{
List keys = options.Keys.ToList();
List values = options.Values.ToList();
int ii = 0;
while (true)
{
this.uriBuilder.Append(keys[ii].Value);
this.uriBuilder.Append(UriHelper.EQUALSSIGN);
this.uriBuilder.Append(values[ii].Value);
if (++ii == keys.Count)
{
break;
}
this.uriBuilder.Append(UriHelper.AMPERSAND);
}
}
/// Serializes an expression to a string.
/// Expression to serialize
/// The serialized expression.
private string ExpressionToString(Expression expression)
{
return ExpressionWriter.ExpressionToString(this.context, expression);
}
}
}
// 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
- TextRangeBase.cs
- LineGeometry.cs
- CurrencyWrapper.cs
- Coordinator.cs
- TableItemStyle.cs
- Monitor.cs
- FontStyle.cs
- Html32TextWriter.cs
- MenuCommand.cs
- ContextBase.cs
- SemanticAnalyzer.cs
- TriggerActionCollection.cs
- WebHttpSecurityModeHelper.cs
- TextTrailingWordEllipsis.cs
- ListControlDataBindingHandler.cs
- ClientScriptManagerWrapper.cs
- M3DUtil.cs
- ServiceModelReg.cs
- ProfessionalColorTable.cs
- ToolConsole.cs
- GenericsInstances.cs
- ManipulationDeltaEventArgs.cs
- XsltCompileContext.cs
- StaticResourceExtension.cs
- XamlDebuggerXmlReader.cs
- DesignerSerializerAttribute.cs
- SoundPlayerAction.cs
- LambdaCompiler.Generated.cs
- ManagementEventWatcher.cs
- ConnectionStringSettingsCollection.cs
- EqualityComparer.cs
- CatalogPartCollection.cs
- PerformanceCounterPermissionAttribute.cs
- thaishape.cs
- InternalBufferManager.cs
- RuntimeCompatibilityAttribute.cs
- TemplateBindingExtensionConverter.cs
- SizeConverter.cs
- GridPattern.cs
- OleDbStruct.cs
- SQLBinary.cs
- GrabHandleGlyph.cs
- OutputCache.cs
- QilReference.cs
- CodeArgumentReferenceExpression.cs
- StreamAsIStream.cs
- SiblingIterators.cs
- PropertyPathConverter.cs
- ControlPersister.cs
- FormsAuthenticationCredentials.cs
- BoolLiteral.cs
- GlobalizationAssembly.cs
- UnitySerializationHolder.cs
- SqlDependencyUtils.cs
- PartitionResolver.cs
- XsdBuildProvider.cs
- QueryStringParameter.cs
- CustomCredentialPolicy.cs
- EventMappingSettingsCollection.cs
- ExplicitDiscriminatorMap.cs
- WindowsTooltip.cs
- SoapFault.cs
- CommentAction.cs
- BasicExpandProvider.cs
- TreeViewItemAutomationPeer.cs
- WorkflowDebuggerSteppingAttribute.cs
- PropertyReferenceSerializer.cs
- TileBrush.cs
- ClientFormsIdentity.cs
- SatelliteContractVersionAttribute.cs
- GetTokenRequest.cs
- BufferedGraphicsContext.cs
- SafeProcessHandle.cs
- MouseEventArgs.cs
- OleDbPermission.cs
- BuildProvider.cs
- NetMsmqSecurityMode.cs
- DelegatedStream.cs
- ValueConversionAttribute.cs
- SatelliteContractVersionAttribute.cs
- StorageSetMapping.cs
- CurrencyWrapper.cs
- TextBounds.cs
- securitycriticaldataClass.cs
- DispatcherHooks.cs
- ContextMenuStripGroupCollection.cs
- DataGridViewTextBoxCell.cs
- NegatedCellConstant.cs
- QilUnary.cs
- XMLDiffLoader.cs
- EntityFrameworkVersions.cs
- ContentHostHelper.cs
- PrivilegeNotHeldException.cs
- SqlDataSourceView.cs
- MsmqIntegrationReceiveParameters.cs
- RemotingConfigParser.cs
- NameScopePropertyAttribute.cs
- ResXBuildProvider.cs
- EventlogProvider.cs
- EntryIndex.cs