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
- AppSecurityManager.cs
- XPathChildIterator.cs
- ProviderCommandInfoUtils.cs
- StandardToolWindows.cs
- RayHitTestParameters.cs
- SystemIPv4InterfaceProperties.cs
- EncoderBestFitFallback.cs
- CodeIndexerExpression.cs
- ConstNode.cs
- XamlToRtfParser.cs
- RefreshPropertiesAttribute.cs
- CodeAccessPermission.cs
- RouteValueExpressionBuilder.cs
- Rfc2898DeriveBytes.cs
- MetadataCacheItem.cs
- DbMetaDataColumnNames.cs
- PageBuildProvider.cs
- PatternMatcher.cs
- FixedDSBuilder.cs
- StyleSheetRefUrlEditor.cs
- ProxyWebPartManager.cs
- CommandLineParser.cs
- FlowDocumentReaderAutomationPeer.cs
- Trace.cs
- HtmlControlPersistable.cs
- EntityDataSourceWizardForm.cs
- SchemaInfo.cs
- GregorianCalendar.cs
- EntityViewGenerationAttribute.cs
- MembershipValidatePasswordEventArgs.cs
- ConcurrentBag.cs
- COSERVERINFO.cs
- TCEAdapterGenerator.cs
- DesignerCatalogPartChrome.cs
- InfoCardMasterKey.cs
- AdCreatedEventArgs.cs
- GridEntry.cs
- NativeMethods.cs
- ImageConverter.cs
- BaseProcessor.cs
- QueryExecutionOption.cs
- NamedPipeHostedTransportConfiguration.cs
- HyperLinkField.cs
- DataKeyCollection.cs
- _HelperAsyncResults.cs
- XmlUtilWriter.cs
- UserControlBuildProvider.cs
- DropShadowBitmapEffect.cs
- XmlElementAttribute.cs
- RoutedUICommand.cs
- FormsAuthentication.cs
- SecurityHelper.cs
- XmlSchemaInclude.cs
- InheritanceContextChangedEventManager.cs
- Geometry3D.cs
- InternalControlCollection.cs
- SqlCacheDependencyDatabase.cs
- SecurityHelper.cs
- ScriptingWebServicesSectionGroup.cs
- ProviderSettings.cs
- AbsoluteQuery.cs
- FileLogRecord.cs
- StaticExtension.cs
- ZipFileInfoCollection.cs
- FixedSOMPageConstructor.cs
- SqlStatistics.cs
- IgnoreSectionHandler.cs
- ToolStripOverflow.cs
- GC.cs
- StyleSheetRefUrlEditor.cs
- DataSetViewSchema.cs
- FixedStringLookup.cs
- ToolStripPanelRenderEventArgs.cs
- CustomLineCap.cs
- ReceiveSecurityHeader.cs
- ProtocolsSection.cs
- NativeRightsManagementAPIsStructures.cs
- Vector3DAnimationBase.cs
- odbcmetadatafactory.cs
- ToolBar.cs
- TextTreeTextNode.cs
- DeclarativeCatalogPart.cs
- ListItemConverter.cs
- WmlCalendarAdapter.cs
- XmlnsCache.cs
- selecteditemcollection.cs
- OraclePermission.cs
- ResizingMessageFilter.cs
- ConfigViewGenerator.cs
- unsafenativemethodsother.cs
- DoubleUtil.cs
- InvariantComparer.cs
- SharedUtils.cs
- PanelStyle.cs
- CatalogPartChrome.cs
- DesignerSerializerAttribute.cs
- AbstractDataSvcMapFileLoader.cs
- NumberSubstitution.cs
- WebServiceData.cs
- ObjectConverter.cs