Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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; } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PermissionRequestEvidence.cs
- Claim.cs
- StorageEntityContainerMapping.cs
- ListViewItem.cs
- precedingsibling.cs
- DataGridViewButtonCell.cs
- BitmapEffectRenderDataResource.cs
- RecognizerInfo.cs
- GregorianCalendarHelper.cs
- OptimalBreakSession.cs
- QuaternionConverter.cs
- ToolStripSplitButton.cs
- HttpResponseMessageProperty.cs
- EntityObject.cs
- TiffBitmapEncoder.cs
- ElapsedEventArgs.cs
- Italic.cs
- IpcPort.cs
- LayoutDump.cs
- InputScope.cs
- EpmHelper.cs
- MenuItemBinding.cs
- DatatypeImplementation.cs
- OperationPickerDialog.designer.cs
- TableStyle.cs
- LoginCancelEventArgs.cs
- LazyTextWriterCreator.cs
- CacheAxisQuery.cs
- FillBehavior.cs
- SapiGrammar.cs
- WorkflowDefinitionContext.cs
- AsyncOperationManager.cs
- BitmapScalingModeValidation.cs
- StylusEventArgs.cs
- PersistChildrenAttribute.cs
- ColumnClickEvent.cs
- DataGridRowAutomationPeer.cs
- formatter.cs
- DataColumnMapping.cs
- IBuiltInEvidence.cs
- CalendarData.cs
- BehaviorEditorPart.cs
- WorkflowServiceAttributesTypeConverter.cs
- IdentitySection.cs
- EventLogInformation.cs
- X509CertificateCollection.cs
- MsmqBindingElementBase.cs
- TreeNodeBindingCollection.cs
- PrintPreviewGraphics.cs
- EllipticalNodeOperations.cs
- MediaContextNotificationWindow.cs
- CodeDomSerializerException.cs
- XmlSchemaAnnotated.cs
- ExpressionBindingCollection.cs
- Positioning.cs
- WebPartConnectionsConfigureVerb.cs
- DataBoundLiteralControl.cs
- CheckBoxFlatAdapter.cs
- XsltCompileContext.cs
- Point3D.cs
- SQLBinaryStorage.cs
- TrackingLocationCollection.cs
- ListViewGroupItemCollection.cs
- BrowserCapabilitiesCompiler.cs
- NativeStructs.cs
- SqlInternalConnection.cs
- PopupRoot.cs
- HitTestFilterBehavior.cs
- Crypto.cs
- EventMappingSettingsCollection.cs
- Effect.cs
- SpecialNameAttribute.cs
- NavigationHelper.cs
- ParentControlDesigner.cs
- _NtlmClient.cs
- Imaging.cs
- ModelUIElement3D.cs
- DataBindingCollection.cs
- FormCollection.cs
- MouseActionValueSerializer.cs
- PersonalizationProvider.cs
- NullableLongMinMaxAggregationOperator.cs
- LessThan.cs
- XPathNodeHelper.cs
- recordstate.cs
- _PooledStream.cs
- NodeCounter.cs
- OleDbSchemaGuid.cs
- RichTextBox.cs
- entityreference_tresulttype.cs
- SpotLight.cs
- EDesignUtil.cs
- ToggleButton.cs
- ExpandSegmentCollection.cs
- namescope.cs
- IndexingContentUnit.cs
- MessageHeaderAttribute.cs
- ButtonStandardAdapter.cs
- SimpleRecyclingCache.cs
- Peer.cs