Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CodeNamespaceImportCollection.cs
- TreeWalkHelper.cs
- NamespaceTable.cs
- TypeBuilderInstantiation.cs
- MobileCapabilities.cs
- ConfigXmlText.cs
- Point3DCollection.cs
- BuildProviderCollection.cs
- AsyncDataRequest.cs
- HttpCacheParams.cs
- RadioButtonPopupAdapter.cs
- PropertyDescriptorCollection.cs
- TextFormatter.cs
- HttpHostedTransportConfiguration.cs
- XmlNamespaceMappingCollection.cs
- Listbox.cs
- InkCanvas.cs
- AdCreatedEventArgs.cs
- CommandID.cs
- PasswordTextNavigator.cs
- TypeExtensionConverter.cs
- AspProxy.cs
- HttpException.cs
- Update.cs
- DecimalStorage.cs
- ExpandCollapseIsCheckedConverter.cs
- Grammar.cs
- CodeArgumentReferenceExpression.cs
- ConfigurationManagerInternal.cs
- SplitterPanel.cs
- FixedHyperLink.cs
- SqlParameter.cs
- FixedSOMLineCollection.cs
- SurrogateDataContract.cs
- ISO2022Encoding.cs
- Bidi.cs
- TableLayoutCellPaintEventArgs.cs
- WorkflowItemsPresenter.cs
- EncoderParameters.cs
- SamlAssertionDirectKeyIdentifierClause.cs
- WebPartZoneCollection.cs
- FirstMatchCodeGroup.cs
- Rotation3DAnimationBase.cs
- SqlEnums.cs
- ReadContentAsBinaryHelper.cs
- XmlQueryTypeFactory.cs
- SqlDataSourceEnumerator.cs
- ParameterModifier.cs
- CodeAccessSecurityEngine.cs
- DataError.cs
- SyntaxCheck.cs
- DecoderBestFitFallback.cs
- Model3D.cs
- StorageTypeMapping.cs
- DisplayToken.cs
- Pkcs7Recipient.cs
- XPathNodeList.cs
- OracleParameterCollection.cs
- DecimalFormatter.cs
- CodeAttributeDeclarationCollection.cs
- TextEffectResolver.cs
- SqlParameterCollection.cs
- EnglishPluralizationService.cs
- VisualState.cs
- OdbcConnectionStringbuilder.cs
- User.cs
- DataServiceRequest.cs
- InputDevice.cs
- GradientStopCollection.cs
- OperationPerformanceCounters.cs
- Queue.cs
- CodeGeneratorOptions.cs
- WindowsEditBox.cs
- DocumentSequenceHighlightLayer.cs
- SelectorItemAutomationPeer.cs
- ReferenceService.cs
- SchemaSetCompiler.cs
- SendActivityValidator.cs
- Literal.cs
- ExceptionAggregator.cs
- HybridDictionary.cs
- AssertFilter.cs
- ParameterElementCollection.cs
- Wizard.cs
- StatusBarItem.cs
- FrameworkContentElement.cs
- DesignerDataTableBase.cs
- Config.cs
- InfoCardBaseException.cs
- ViewSimplifier.cs
- RandomDelayQueuedSendsAsyncResult.cs
- DocumentPaginator.cs
- DivideByZeroException.cs
- PersonalizationStateInfo.cs
- BitmapPalette.cs
- CalendarAutoFormatDialog.cs
- ExpressionEditorSheet.cs
- TextProviderWrapper.cs
- LayoutTable.cs
- SlotInfo.cs