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
- ObjectDataSourceDisposingEventArgs.cs
- NonBatchDirectoryCompiler.cs
- StringUtil.cs
- LinqDataView.cs
- PointAnimationUsingPath.cs
- DesignerTransactionCloseEvent.cs
- CacheChildrenQuery.cs
- AsymmetricCryptoHandle.cs
- DataRelation.cs
- OleDbConnection.cs
- StateChangeEvent.cs
- ToolStripCodeDomSerializer.cs
- DbProviderFactory.cs
- EncodingDataItem.cs
- RegionInfo.cs
- CharUnicodeInfo.cs
- DataBindEngine.cs
- RegexMatch.cs
- Propagator.Evaluator.cs
- OdbcConnection.cs
- LinqDataSourceStatusEventArgs.cs
- ToolboxBitmapAttribute.cs
- GcSettings.cs
- ObjectItemCollection.cs
- PrintSchema.cs
- DebugView.cs
- WCFModelStrings.Designer.cs
- securitycriticaldata.cs
- Win32.cs
- CustomAssemblyResolver.cs
- EncoderFallback.cs
- SafePEFileHandle.cs
- DataServiceQueryProvider.cs
- SchemaMapping.cs
- EncoderNLS.cs
- HitTestWithGeometryDrawingContextWalker.cs
- Debug.cs
- DES.cs
- ServicesUtilities.cs
- AppDomainInstanceProvider.cs
- Claim.cs
- WebInvokeAttribute.cs
- ObjectContext.cs
- InkCanvasFeedbackAdorner.cs
- TypeUsageBuilder.cs
- Rights.cs
- Line.cs
- XmlSchemaComplexContentExtension.cs
- CodeAttributeArgumentCollection.cs
- EntityReference.cs
- CfgSemanticTag.cs
- _OSSOCK.cs
- Help.cs
- HttpDictionary.cs
- CompilerError.cs
- DictionaryBase.cs
- FirstMatchCodeGroup.cs
- WindowsBrush.cs
- AttributeUsageAttribute.cs
- ConstructorBuilder.cs
- ExpressionEditorAttribute.cs
- ToolStripOverflow.cs
- HttpHandlerAction.cs
- CheckBoxList.cs
- AssemblyBuilderData.cs
- Message.cs
- ClientRoleProvider.cs
- ButtonBase.cs
- ListSourceHelper.cs
- StatusBarDrawItemEvent.cs
- ScrollBar.cs
- Activity.cs
- DbDataAdapter.cs
- ObjectTag.cs
- TableAutomationPeer.cs
- ScriptingJsonSerializationSection.cs
- SID.cs
- ObfuscateAssemblyAttribute.cs
- TextTreeDeleteContentUndoUnit.cs
- WorkerRequest.cs
- StringAnimationUsingKeyFrames.cs
- X509CertificateClaimSet.cs
- WorkItem.cs
- ProcessManager.cs
- ClrProviderManifest.cs
- XmlDocument.cs
- ConnectionManagementElement.cs
- PropertyConverter.cs
- RegexWorker.cs
- SqlBulkCopyColumnMapping.cs
- ProxySimple.cs
- RelationshipSet.cs
- XmlSchemaSimpleType.cs
- TextPattern.cs
- CodeCatchClause.cs
- CompatibleComparer.cs
- BitmapCacheBrush.cs
- initElementDictionary.cs
- JsonQNameDataContract.cs
- CodeDomComponentSerializationService.cs