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
- HtmlInputButton.cs
- ConsoleTraceListener.cs
- EntityUtil.cs
- AssemblyCache.cs
- ParentQuery.cs
- MemberDomainMap.cs
- MD5CryptoServiceProvider.cs
- DbProviderFactory.cs
- FormsAuthenticationEventArgs.cs
- ExpressionVisitor.cs
- PolyBezierSegmentFigureLogic.cs
- AnonymousIdentificationSection.cs
- CalendarDateChangedEventArgs.cs
- NestedContainer.cs
- EditCommandColumn.cs
- CompilerTypeWithParams.cs
- HttpPostLocalhostServerProtocol.cs
- XmlSchemaAttributeGroup.cs
- FormClosingEvent.cs
- TrackPoint.cs
- PersonalizationDictionary.cs
- BitmapDownload.cs
- Encoding.cs
- AutomationEvent.cs
- TimeEnumHelper.cs
- MethodToken.cs
- FacetDescription.cs
- CodeTypeDelegate.cs
- TextRangeAdaptor.cs
- GPStream.cs
- TreeNodeSelectionProcessor.cs
- MarkupCompilePass2.cs
- SystemColorTracker.cs
- EventMappingSettingsCollection.cs
- MethodBody.cs
- RequestCacheManager.cs
- xmlsaver.cs
- SqlConnectionFactory.cs
- BezierSegment.cs
- XmlDictionary.cs
- PenContext.cs
- Hyperlink.cs
- FlowchartDesigner.xaml.cs
- SQLInt16.cs
- WebReferenceOptions.cs
- SerializationStore.cs
- BindingSource.cs
- SiteMapNodeItem.cs
- TouchEventArgs.cs
- XmlWriter.cs
- DatasetMethodGenerator.cs
- KeyGestureValueSerializer.cs
- DataGridRow.cs
- XmlNamespaceDeclarationsAttribute.cs
- InputMethodStateChangeEventArgs.cs
- FixedTextView.cs
- WpfWebRequestHelper.cs
- RedistVersionInfo.cs
- WSDualHttpBinding.cs
- MouseActionConverter.cs
- IdentityReference.cs
- MissingSatelliteAssemblyException.cs
- ToolStripPanelSelectionBehavior.cs
- TableStyle.cs
- MonitoringDescriptionAttribute.cs
- DbConnectionStringBuilder.cs
- BinaryCommonClasses.cs
- EntityKey.cs
- Msmq4SubqueuePoisonHandler.cs
- DelegateHelpers.cs
- PrePostDescendentsWalker.cs
- EnumerationRangeValidationUtil.cs
- WebPartTransformerAttribute.cs
- tooltip.cs
- ConfigurationManagerHelperFactory.cs
- InputScopeConverter.cs
- EventProperty.cs
- ShaperBuffers.cs
- ExpandoObject.cs
- OdbcConnectionOpen.cs
- DataGridCaption.cs
- RegexCharClass.cs
- DataObjectCopyingEventArgs.cs
- BlockUIContainer.cs
- ChannelManager.cs
- TabControl.cs
- Point.cs
- TextEndOfLine.cs
- SchemaTableOptionalColumn.cs
- SqlProvider.cs
- Wrapper.cs
- DataTableMappingCollection.cs
- CachingHintValidation.cs
- DataGridViewCell.cs
- IteratorFilter.cs
- StylesEditorDialog.cs
- XsltArgumentList.cs
- PackageDigitalSignatureManager.cs
- EventSinkHelperWriter.cs
- _ProxyRegBlob.cs