Code:
/ FX-1434 / FX-1434 / 1.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
- ControlSerializer.cs
- CodeMemberProperty.cs
- Visitor.cs
- DesignTimeTemplateParser.cs
- GeneralTransform3DTo2D.cs
- ButtonPopupAdapter.cs
- Error.cs
- IDQuery.cs
- EFAssociationProvider.cs
- X509CertificateCollection.cs
- Unit.cs
- CannotUnloadAppDomainException.cs
- RemoteWebConfigurationHostServer.cs
- OracleRowUpdatedEventArgs.cs
- SafeNativeMethodsCLR.cs
- XamlSerializerUtil.cs
- Visual.cs
- ObjectDataSource.cs
- KeySplineConverter.cs
- XmlChoiceIdentifierAttribute.cs
- ToolStripTextBox.cs
- PhoneCallDesigner.cs
- glyphs.cs
- TagPrefixAttribute.cs
- ZipIOExtraField.cs
- OdbcError.cs
- CommonXSendMessage.cs
- XmlSchemaSequence.cs
- ConfigXmlComment.cs
- MetadataCache.cs
- BooleanKeyFrameCollection.cs
- CheckBoxAutomationPeer.cs
- _LocalDataStore.cs
- CannotUnloadAppDomainException.cs
- XpsFilter.cs
- SecurityElement.cs
- GridViewColumnCollectionChangedEventArgs.cs
- MethodMessage.cs
- IdentitySection.cs
- DataGridViewRowCancelEventArgs.cs
- PeerContact.cs
- OpenTypeLayout.cs
- XPathParser.cs
- Aes.cs
- ToolStripRenderEventArgs.cs
- MatrixAnimationUsingKeyFrames.cs
- SuppressedPackageProperties.cs
- SqlColumnizer.cs
- ColumnResizeAdorner.cs
- DataGridViewCellStyle.cs
- TabControlToolboxItem.cs
- FlowSwitchLink.cs
- TraceSection.cs
- SspiNegotiationTokenAuthenticator.cs
- DefaultBinder.cs
- DataGridViewTopLeftHeaderCell.cs
- ZipIOFileItemStream.cs
- RelationshipDetailsRow.cs
- PropertyStore.cs
- CompiledXpathExpr.cs
- Empty.cs
- Process.cs
- Events.cs
- StringHandle.cs
- ComponentConverter.cs
- PasswordRecovery.cs
- PatternMatcher.cs
- FontSource.cs
- WizardStepCollectionEditor.cs
- XpsS0ValidatingLoader.cs
- CodeAttributeArgumentCollection.cs
- TableLayoutSettingsTypeConverter.cs
- ResourceDescriptionAttribute.cs
- XmlUtil.cs
- ValueOfAction.cs
- DataProviderNameConverter.cs
- TextContainerChangeEventArgs.cs
- LinkUtilities.cs
- ModuleConfigurationInfo.cs
- GatewayIPAddressInformationCollection.cs
- TableChangeProcessor.cs
- CombinedGeometry.cs
- Stackframe.cs
- BitmapEncoder.cs
- XmlSchemaValidator.cs
- XPathParser.cs
- Sequence.cs
- InternalDispatchObject.cs
- OLEDB_Enum.cs
- Int32.cs
- CorePropertiesFilter.cs
- PropertyChange.cs
- _UncName.cs
- SplitContainer.cs
- DebugHandleTracker.cs
- dsa.cs
- CroppedBitmap.cs
- OpCodes.cs
- StylusPointPropertyInfoDefaults.cs
- Logging.cs