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
- OleDbDataReader.cs
- WebRequestModulesSection.cs
- DataObjectEventArgs.cs
- GC.cs
- SimpleWorkerRequest.cs
- UndoManager.cs
- PointLightBase.cs
- Hash.cs
- ObjectViewFactory.cs
- _ChunkParse.cs
- DBConnectionString.cs
- X509CertificateStore.cs
- IntMinMaxAggregationOperator.cs
- PrintEvent.cs
- CustomError.cs
- GeneralTransform.cs
- RowTypePropertyElement.cs
- COM2PropertyDescriptor.cs
- InternalBufferOverflowException.cs
- UrlAuthFailedErrorFormatter.cs
- ComplexTypeEmitter.cs
- SqlParameter.cs
- InstalledFontCollection.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- HtmlInputControl.cs
- StylusPointPropertyId.cs
- CodeMemberField.cs
- GridViewRowCollection.cs
- DbgCompiler.cs
- DetailsViewDeleteEventArgs.cs
- LayoutSettings.cs
- assemblycache.cs
- XmlArrayItemAttributes.cs
- StatusStrip.cs
- CustomWebEventKey.cs
- DbMetaDataColumnNames.cs
- FixedDocumentSequencePaginator.cs
- CheckBoxRenderer.cs
- ConfigurationElementProperty.cs
- controlskin.cs
- PenCursorManager.cs
- ListBindableAttribute.cs
- MonitorWrapper.cs
- StatusBarItem.cs
- FileUtil.cs
- RemoteWebConfigurationHostStream.cs
- XmlResolver.cs
- ParseNumbers.cs
- Label.cs
- ApplicationGesture.cs
- ForceCopyBuildProvider.cs
- TextSelectionHelper.cs
- SmtpFailedRecipientsException.cs
- DataServiceException.cs
- WizardStepBase.cs
- OrthographicCamera.cs
- CodeGeneratorOptions.cs
- DBBindings.cs
- DateTimeSerializationSection.cs
- DependencyProperty.cs
- ECDiffieHellmanPublicKey.cs
- HandlerFactoryCache.cs
- SessionParameter.cs
- BitmapEffect.cs
- Rotation3DAnimationBase.cs
- XmlSchemaFacet.cs
- BinaryMethodMessage.cs
- CompressEmulationStream.cs
- ByteConverter.cs
- LineProperties.cs
- CompositeActivityMarkupSerializer.cs
- _MultipleConnectAsync.cs
- SHA256CryptoServiceProvider.cs
- Triangle.cs
- GroupJoinQueryOperator.cs
- AuthenticatingEventArgs.cs
- XmlValidatingReader.cs
- ObjectQuery_EntitySqlExtensions.cs
- TabItem.cs
- AuthenticationService.cs
- XamlDesignerSerializationManager.cs
- MenuItemStyleCollection.cs
- DataBinder.cs
- Base64Stream.cs
- XmlBufferReader.cs
- ClientConfigurationHost.cs
- ChildTable.cs
- StorageEntityContainerMapping.cs
- DataGridViewCellCancelEventArgs.cs
- PerformanceCounterManager.cs
- XsltCompileContext.cs
- MemoryRecordBuffer.cs
- Highlights.cs
- RemotingConfigParser.cs
- GeometryHitTestParameters.cs
- SafeMILHandle.cs
- MappingItemCollection.cs
- WindowsFormsSynchronizationContext.cs
- OleDbCommand.cs
- Vector.cs