Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// 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;
}
}
}
// 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
- PersonalizableAttribute.cs
- TransformCollection.cs
- Context.cs
- OciEnlistContext.cs
- WinFormsSecurity.cs
- DockPattern.cs
- PageCache.cs
- Light.cs
- WebPartHeaderCloseVerb.cs
- RawAppCommandInputReport.cs
- DataRelationPropertyDescriptor.cs
- LinearKeyFrames.cs
- X500Name.cs
- ArgumentValue.cs
- ColumnResult.cs
- XamlParser.cs
- SettingsProviderCollection.cs
- ExitEventArgs.cs
- BaseAppDomainProtocolHandler.cs
- SiteMapNodeCollection.cs
- IdnElement.cs
- TextRange.cs
- MimeReturn.cs
- PropertyTabChangedEvent.cs
- EncoderFallback.cs
- Scene3D.cs
- OracleException.cs
- EventSinkHelperWriter.cs
- RouteData.cs
- TriggerBase.cs
- ObjectItemLoadingSessionData.cs
- OdbcDataReader.cs
- ContentElement.cs
- EntityDataSourceContextDisposingEventArgs.cs
- RecognizerBase.cs
- DefaultPrintController.cs
- ParallelRangeManager.cs
- NavigationHelper.cs
- XmlIlTypeHelper.cs
- HttpRequestCacheValidator.cs
- TextPatternIdentifiers.cs
- SwitchAttribute.cs
- ObjectParameterCollection.cs
- HttpConfigurationContext.cs
- _TLSstream.cs
- GlobalProxySelection.cs
- Cursor.cs
- ObjectQuery.cs
- DataBoundLiteralControl.cs
- WmfPlaceableFileHeader.cs
- COM2PictureConverter.cs
- EmptyQuery.cs
- ChannelManagerBase.cs
- XmlQueryCardinality.cs
- HexParser.cs
- DesignerAdRotatorAdapter.cs
- WmpBitmapDecoder.cs
- WebPartVerbCollection.cs
- HashCodeCombiner.cs
- ManagementQuery.cs
- TaiwanLunisolarCalendar.cs
- Utils.cs
- SendMessageContent.cs
- URLString.cs
- RightsManagementEncryptionTransform.cs
- future.cs
- X509AsymmetricSecurityKey.cs
- ExplicitDiscriminatorMap.cs
- ConfigurationValue.cs
- _HeaderInfo.cs
- DoubleConverter.cs
- ArraySet.cs
- GenericTypeParameterBuilder.cs
- RegistryPermission.cs
- ScriptIgnoreAttribute.cs
- WebPartDisplayModeCancelEventArgs.cs
- PrimitiveSchema.cs
- BaseTemplatedMobileComponentEditor.cs
- EntityDataSourceUtil.cs
- Substitution.cs
- EncoderBestFitFallback.cs
- StatusBarPanel.cs
- WSHttpBindingBase.cs
- ReflectTypeDescriptionProvider.cs
- CollectionEditor.cs
- TextDpi.cs
- ColorMatrix.cs
- CalculatedColumn.cs
- StackOverflowException.cs
- ConnectionConsumerAttribute.cs
- AttachInfo.cs
- StreamResourceInfo.cs
- MetadataFile.cs
- SmtpSection.cs
- PreviewPrintController.cs
- LineBreak.cs
- RuleInfoComparer.cs
- Registration.cs
- MissingMemberException.cs
- SelectionChangedEventArgs.cs