Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Compilation / ExpressionBuilder.cs / 1 / ExpressionBuilder.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Compilation {
using System;
using System.Security.Permissions;
using System.CodeDom;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel.Design;
using System.Web.Configuration;
using System.Reflection;
using System.Web;
using System.Web.Hosting;
#if !FEATURE_PAL
using System.Web.UI.Design;
#endif // !FEATURE_PAL
using System.Web.UI;
using System.Web.Util;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public abstract class ExpressionBuilder {
private static ExpressionBuilder dataBindingExpressionBuilder;
internal virtual void BuildExpression(BoundPropertyEntry bpe, ControlBuilder controlBuilder,
CodeExpression controlReference, CodeStatementCollection methodStatements, CodeStatementCollection statements, CodeLinePragma linePragma, ref bool hasTempObject) {
CodeExpression codeExpression = GetCodeExpression(bpe,
bpe.ParsedExpressionData, new ExpressionBuilderContext(controlBuilder.VirtualPath));
CodeDomUtility.CreatePropertySetStatements(methodStatements, statements,
controlReference, bpe.Name, bpe.Type,
codeExpression,
linePragma);
}
internal static ExpressionBuilder GetExpressionBuilder(string expressionPrefix, VirtualPath virtualPath) {
return GetExpressionBuilder(expressionPrefix, virtualPath, null);
}
internal static ExpressionBuilder GetExpressionBuilder(string expressionPrefix, VirtualPath virtualPath, IDesignerHost host) {
// If there is no expressionPrefix, it's a v1 style databinding expression
if (expressionPrefix.Length == 0) {
if (dataBindingExpressionBuilder == null) {
dataBindingExpressionBuilder = new DataBindingExpressionBuilder();
}
return dataBindingExpressionBuilder;
}
CompilationSection config = null;
// If we are in the designer, we need to access IWebApplication config instead
#if !FEATURE_PAL // FEATURE_PAL does not support designer-based features
if (host != null) {
IWebApplication webapp = (IWebApplication)host.GetService(typeof(IWebApplication));
if (webapp != null) {
config = webapp.OpenWebConfiguration(true).GetSection("system.web/compilation") as CompilationSection;
}
}
#endif // !FEATURE_PAL
// If we failed to get config from the designer, fall back on runtime config always
if (config == null) {
config = RuntimeConfig.GetConfig(virtualPath).Compilation;
}
System.Web.Configuration.ExpressionBuilder builder = config.ExpressionBuilders[expressionPrefix];
if (builder == null) {
throw new HttpParseException(SR.GetString(SR.InvalidExpressionPrefix, expressionPrefix));
}
Type expressionBuilderType = null;
if (host != null) {
// If we are in the designer, we have to use the type resolution service
ITypeResolutionService ts = (ITypeResolutionService)host.GetService(typeof(ITypeResolutionService));
if (ts != null) {
expressionBuilderType = ts.GetType(builder.Type);
}
}
if (expressionBuilderType == null) {
expressionBuilderType = builder.TypeInternal;
}
Debug.Assert(expressionBuilderType != null, "expressionBuilderType should not be null");
if (!typeof(ExpressionBuilder).IsAssignableFrom(expressionBuilderType)) {
throw new HttpParseException(SR.GetString(SR.ExpressionBuilder_InvalidType, expressionBuilderType.FullName));
}
ExpressionBuilder expressionBuilder = (ExpressionBuilder)HttpRuntime.FastCreatePublicInstance(expressionBuilderType);
return expressionBuilder;
}
//
// Public API
//
public virtual bool SupportsEvaluate {
get {
return false;
}
}
public virtual object ParseExpression(string expression, Type propertyType, ExpressionBuilderContext context) {
return null;
}
public abstract CodeExpression GetCodeExpression(BoundPropertyEntry entry,
object parsedData, ExpressionBuilderContext context);
public virtual object EvaluateExpression(object target, BoundPropertyEntry entry,
object parsedData, ExpressionBuilderContext context) {
return null;
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IProvider.cs
- XmlSchemaSequence.cs
- RuntimeEnvironment.cs
- WorkflowPageSetupDialog.cs
- Button.cs
- Assert.cs
- CardSpaceException.cs
- SqlUdtInfo.cs
- BamlLocalizationDictionary.cs
- VirtualPathUtility.cs
- PrintDialog.cs
- ComplexPropertyEntry.cs
- ContractAdapter.cs
- Rect3DValueSerializer.cs
- ActivityInstanceMap.cs
- sqlnorm.cs
- MessageQueueTransaction.cs
- RuntimeHelpers.cs
- Compilation.cs
- SqlDataSourceQueryEditorForm.cs
- altserialization.cs
- HandlerBase.cs
- ConfigurationConverterBase.cs
- dsa.cs
- BinHexEncoder.cs
- SqlDataSourceView.cs
- QfeChecker.cs
- AppManager.cs
- ObjectDataSource.cs
- DbSetClause.cs
- DataTablePropertyDescriptor.cs
- CroppedBitmap.cs
- CompoundFileReference.cs
- StylusEventArgs.cs
- EventDescriptor.cs
- XmlQueryType.cs
- _SslSessionsCache.cs
- NumericPagerField.cs
- BuildProviderCollection.cs
- ButtonFieldBase.cs
- AttributeData.cs
- XPathNodeHelper.cs
- DataSourceHelper.cs
- DataGridCellsPresenter.cs
- FixedDSBuilder.cs
- MessageQueueConverter.cs
- PolicyException.cs
- IssuanceLicense.cs
- TableLayoutStyleCollection.cs
- WizardStepBase.cs
- HtmlLink.cs
- KeyGestureValueSerializer.cs
- TrustSection.cs
- BCryptNative.cs
- JavaScriptSerializer.cs
- StorageMappingItemCollection.cs
- DropShadowBitmapEffect.cs
- DesignerWebPartChrome.cs
- ProcessModelSection.cs
- TableSectionStyle.cs
- GenericParameterDataContract.cs
- RelativeSource.cs
- SystemIPInterfaceStatistics.cs
- ActivitySurrogateSelector.cs
- CreateUserWizardStep.cs
- SectionInput.cs
- UIInitializationException.cs
- StrokeSerializer.cs
- TextDocumentView.cs
- PrintDialog.cs
- ColorTransform.cs
- TabletDeviceInfo.cs
- SerializationStore.cs
- NoneExcludedImageIndexConverter.cs
- ResourceAttributes.cs
- LogLogRecord.cs
- DoWorkEventArgs.cs
- SegmentInfo.cs
- SoapObjectInfo.cs
- ProxyHelper.cs
- ClientRuntimeConfig.cs
- DesignerVerb.cs
- CharAnimationUsingKeyFrames.cs
- Rotation3DAnimationUsingKeyFrames.cs
- HtmlEncodedRawTextWriter.cs
- PathSegmentCollection.cs
- PackagePart.cs
- ConfigDefinitionUpdates.cs
- ChannelListenerBase.cs
- MatrixTransform.cs
- XmlDownloadManager.cs
- JsonServiceDocumentSerializer.cs
- Wow64ConfigurationLoader.cs
- SortDescription.cs
- WebSysDefaultValueAttribute.cs
- SecurityContextTokenCache.cs
- IndentedTextWriter.cs
- EpmSyndicationContentSerializer.cs
- Frame.cs
- TextHidden.cs