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
- PenLineJoinValidation.cs
- ConfigurationProperty.cs
- SecurityTokenRequirement.cs
- OutputCacheProfileCollection.cs
- UInt16Converter.cs
- _BufferOffsetSize.cs
- EventEntry.cs
- OpCodes.cs
- EqualityComparer.cs
- dbenumerator.cs
- ThreadStateException.cs
- _NegoState.cs
- HotSpotCollectionEditor.cs
- HTMLTagNameToTypeMapper.cs
- FixedSOMElement.cs
- XmlValidatingReaderImpl.cs
- Message.cs
- AsyncStreamReader.cs
- SqlDataSourceCache.cs
- SubqueryTrackingVisitor.cs
- ConversionContext.cs
- ModelVisual3D.cs
- DataGridViewToolTip.cs
- KeyValueSerializer.cs
- cookieexception.cs
- XamlToRtfParser.cs
- XNodeNavigator.cs
- ProjectionCamera.cs
- InternalMappingException.cs
- SortKey.cs
- SqlCacheDependencySection.cs
- HtmlControlPersistable.cs
- StreamResourceInfo.cs
- DateTimeConverter.cs
- OlePropertyStructs.cs
- BufferedGraphics.cs
- ActiveXContainer.cs
- WebPartVerbsEventArgs.cs
- CryptoHelper.cs
- DecoderFallbackWithFailureFlag.cs
- Typography.cs
- RtfControlWordInfo.cs
- _NativeSSPI.cs
- AsyncStreamReader.cs
- GifBitmapDecoder.cs
- BatchWriter.cs
- WindowsGraphicsCacheManager.cs
- StringExpressionSet.cs
- StringFreezingAttribute.cs
- ToolStripDropDownItem.cs
- PauseStoryboard.cs
- TextModifierScope.cs
- EntityReference.cs
- RuleValidation.cs
- DesignerActionHeaderItem.cs
- TextRangeBase.cs
- ObjectReaderCompiler.cs
- DeviceSpecificDesigner.cs
- _TimerThread.cs
- NativeMethods.cs
- DescriptionAttribute.cs
- RectAnimationUsingKeyFrames.cs
- EntityClassGenerator.cs
- DataStreamFromComStream.cs
- GrammarBuilderWildcard.cs
- ConfigurationValue.cs
- RepeaterItemEventArgs.cs
- SqlStream.cs
- LayoutSettings.cs
- XmlImplementation.cs
- EventHandlerList.cs
- DataGridTable.cs
- UnsafeNetInfoNativeMethods.cs
- StringBuilder.cs
- StandardCommandToolStripMenuItem.cs
- WindowInteractionStateTracker.cs
- CharConverter.cs
- XmlUnspecifiedAttribute.cs
- TableLayoutPanelBehavior.cs
- CustomErrorCollection.cs
- RepeatInfo.cs
- EventTrigger.cs
- SpeechRecognitionEngine.cs
- Int32Animation.cs
- FileRecordSequenceCompletedAsyncResult.cs
- IsolatedStoragePermission.cs
- RequestCacheEntry.cs
- ModulesEntry.cs
- WhitespaceReader.cs
- DataGridPagerStyle.cs
- ConfigurationSettings.cs
- ListViewHitTestInfo.cs
- Options.cs
- TypeConvertions.cs
- HostedHttpTransportManager.cs
- ParameterDataSourceExpression.cs
- NavigateEvent.cs
- GlyphingCache.cs
- ChildDocumentBlock.cs
- Int16Converter.cs