Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Compilation / AppSettingsExpressionBuilder.cs / 1305376 / 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)] 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataException.cs
- ControlSerializer.cs
- ExtensionQuery.cs
- HMAC.cs
- UnitySerializationHolder.cs
- TreeBuilderXamlTranslator.cs
- RelationshipFixer.cs
- CodeIdentifier.cs
- SeverityFilter.cs
- RIPEMD160Managed.cs
- DataServiceRequestException.cs
- XmlBaseWriter.cs
- ContractListAdapter.cs
- GridViewCancelEditEventArgs.cs
- TemplateBaseAction.cs
- ListMarkerSourceInfo.cs
- Effect.cs
- MexHttpsBindingCollectionElement.cs
- HashHelpers.cs
- ContextMenu.cs
- SQLUtility.cs
- AdornedElementPlaceholder.cs
- EventLogPermissionEntry.cs
- HostingEnvironment.cs
- ProxyDataContractResolver.cs
- InternalBufferOverflowException.cs
- PrinterUnitConvert.cs
- FramingEncoders.cs
- _IPv4Address.cs
- HttpCookie.cs
- ListenerElementsCollection.cs
- BaseAppDomainProtocolHandler.cs
- SecurityTokenProvider.cs
- SamlAuthorityBinding.cs
- OptimizerPatterns.cs
- WebPartMenuStyle.cs
- XsltFunctions.cs
- AuthenticateEventArgs.cs
- DispatcherHooks.cs
- CompiledQuery.cs
- DetailsViewInsertEventArgs.cs
- HighlightComponent.cs
- OutgoingWebRequestContext.cs
- ObjectCloneHelper.cs
- BaseTemplateParser.cs
- SymmetricKey.cs
- LinearKeyFrames.cs
- UnhandledExceptionEventArgs.cs
- httpserverutility.cs
- MethodBuilder.cs
- CallbackTimeoutsElement.cs
- UICuesEvent.cs
- _ConnectOverlappedAsyncResult.cs
- ChannelManager.cs
- HitTestParameters.cs
- TypeBrowser.xaml.cs
- ProcessModule.cs
- NamespaceInfo.cs
- SortedList.cs
- ParameterModifier.cs
- DoubleAnimationClockResource.cs
- DBDataPermission.cs
- ObfuscationAttribute.cs
- HyperLinkStyle.cs
- Roles.cs
- HTTPRemotingHandler.cs
- InfoCardAsymmetricCrypto.cs
- EncodingNLS.cs
- XmlValidatingReaderImpl.cs
- Matrix.cs
- InputLanguageCollection.cs
- WindowsTooltip.cs
- PropertyPath.cs
- RtType.cs
- MappingItemCollection.cs
- LogicalExpressionEditor.cs
- TextDpi.cs
- DataGridViewRowsAddedEventArgs.cs
- DoubleAnimationBase.cs
- TypeConstant.cs
- InputScopeManager.cs
- XmlSchemaAppInfo.cs
- ProxyAttribute.cs
- SqlGatherProducedAliases.cs
- FormClosingEvent.cs
- Errors.cs
- CapabilitiesPattern.cs
- StylusPointPropertyUnit.cs
- Perspective.cs
- EncryptedKey.cs
- PackageFilter.cs
- Int32KeyFrameCollection.cs
- TreeViewImageIndexConverter.cs
- SQLConvert.cs
- AttachmentService.cs
- CodeObject.cs
- URIFormatException.cs
- CustomCredentialPolicy.cs
- HandledEventArgs.cs
- Parser.cs