Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / Compilation / AppSettingsExpressionBuilder.cs / 1 / AppSettingsExpressionBuilder.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Compilation { using System; using System.Security.Permissions; using System.CodeDom; using System.ComponentModel; using System.Configuration; using System.Diagnostics; using System.Web.UI; [ExpressionPrefix("AppSettings")] [ExpressionEditor("System.Web.UI.Design.AppSettingsExpressionEditor, " + AssemblyRef.SystemDesign)] [AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class AppSettingsExpressionBuilder : ExpressionBuilder { public override bool SupportsEvaluate { get { return true; } } public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { if (entry.DeclaringType == null || entry.PropertyInfo == null) { return new CodeMethodInvokeExpression( new CodeTypeReferenceExpression(this.GetType()), "GetAppSetting", new CodePrimitiveExpression(entry.Expression.Trim())); } else { return new CodeMethodInvokeExpression( new CodeTypeReferenceExpression(this.GetType()), "GetAppSetting", new CodePrimitiveExpression(entry.Expression.Trim()), new CodeTypeOfExpression(entry.DeclaringType), new CodePrimitiveExpression(entry.PropertyInfo.Name)); } } public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { return GetAppSetting(entry.Expression, target.GetType(), entry.PropertyInfo.Name); } public static object GetAppSetting(string key) { string value = ConfigurationManager.AppSettings[key]; if (value == null) { throw new InvalidOperationException(SR.GetString(SR.AppSetting_not_found, key)); } return value; } public static object GetAppSetting(string key, Type targetType, string propertyName) { string value = ConfigurationManager.AppSettings[key]; if (targetType != null) { PropertyDescriptor propDesc = TypeDescriptor.GetProperties(targetType)[propertyName]; if (propDesc != null) { if (propDesc.PropertyType != typeof(string)) { TypeConverter converter = propDesc.Converter; if (converter.CanConvertFrom(typeof(string))) { return converter.ConvertFrom(value); } else { throw new InvalidOperationException(SR.GetString(SR.AppSetting_not_convertible, value, propDesc.PropertyType.Name, propDesc.Name)); } } } } if (value == null) { throw new InvalidOperationException(SR.GetString(SR.AppSetting_not_found, key)); } return value; } } } // 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
- XmlSchemaAppInfo.cs
- DetailsViewPageEventArgs.cs
- TracingConnection.cs
- XmlSchemaSimpleTypeList.cs
- AudioStateChangedEventArgs.cs
- HttpContextBase.cs
- ResXBuildProvider.cs
- IndexedSelectQueryOperator.cs
- Marshal.cs
- HideDisabledControlAdapter.cs
- ProfileParameter.cs
- XmlObjectSerializerReadContextComplexJson.cs
- DataContext.cs
- MessageBox.cs
- DocumentViewerBase.cs
- String.cs
- SmiTypedGetterSetter.cs
- Timer.cs
- SmtpClient.cs
- XPathNodeInfoAtom.cs
- ClaimTypes.cs
- SmtpAuthenticationManager.cs
- RequiredFieldValidator.cs
- BaseComponentEditor.cs
- SymbolEqualComparer.cs
- ArrayExtension.cs
- MruCache.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- TreeViewItem.cs
- XpsThumbnail.cs
- ValueType.cs
- ListGeneralPage.cs
- XhtmlConformanceSection.cs
- SqlProfileProvider.cs
- NameValueConfigurationCollection.cs
- _LazyAsyncResult.cs
- ListViewItemSelectionChangedEvent.cs
- IsolatedStorageFilePermission.cs
- CompilerInfo.cs
- WebControlParameterProxy.cs
- UIElementHelper.cs
- CapabilitiesUse.cs
- KeyBinding.cs
- DefaultValidator.cs
- PageDeviceFont.cs
- Wildcard.cs
- EventArgs.cs
- DatatypeImplementation.cs
- ThumbAutomationPeer.cs
- CodeAttributeDeclarationCollection.cs
- AutomationInteropProvider.cs
- HttpConfigurationSystem.cs
- DesignerTextBoxAdapter.cs
- HttpRuntime.cs
- ScaleTransform.cs
- StubHelpers.cs
- ParameterCollection.cs
- XmlSchemaParticle.cs
- PopupEventArgs.cs
- ComponentEvent.cs
- SqlMethodTransformer.cs
- sqlstateclientmanager.cs
- OdbcEnvironment.cs
- ImageAttributes.cs
- MouseDevice.cs
- DesignTimeTemplateParser.cs
- InternalTypeHelper.cs
- _IPv6Address.cs
- SplitterPanelDesigner.cs
- DispatcherExceptionFilterEventArgs.cs
- DataGridViewMethods.cs
- X509InitiatorCertificateClientElement.cs
- PerformanceCounterPermissionAttribute.cs
- WizardPanel.cs
- DataBindingCollectionConverter.cs
- WindowsHyperlink.cs
- XmlSiteMapProvider.cs
- WebConvert.cs
- WorkflowServiceOperationListItem.cs
- TemplateControlParser.cs
- querybuilder.cs
- RTLAwareMessageBox.cs
- InstanceNormalEvent.cs
- DrawingVisualDrawingContext.cs
- BinaryMethodMessage.cs
- RenderContext.cs
- RequestStatusBarUpdateEventArgs.cs
- BitmapEffectvisualstate.cs
- Compiler.cs
- HostedBindingBehavior.cs
- SoapAttributeOverrides.cs
- ColorTransformHelper.cs
- NavigationExpr.cs
- FileEnumerator.cs
- BitmapMetadataBlob.cs
- XmlSerializationGeneratedCode.cs
- ToolboxItemImageConverter.cs
- SqlInfoMessageEvent.cs
- DocumentGridPage.cs
- DispatcherEventArgs.cs