Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / Compilation / ConnectionStringsExpressionBuilder.cs / 2 / ConnectionStringsExpressionBuilder.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Compilation { using System; using System.Security.Permissions; using System.CodeDom; using System.Configuration; using System.Globalization; using System.Web.UI; [ExpressionPrefix("ConnectionStrings")] [ExpressionEditor("System.Web.UI.Design.ConnectionStringsExpressionEditor, " + AssemblyRef.SystemDesign)] [AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class ConnectionStringsExpressionBuilder : ExpressionBuilder { public override bool SupportsEvaluate { get { return true; } } public override object ParseExpression(string expression, Type propertyType, ExpressionBuilderContext context) { // This code is also copied in ConnectionStringsExpressionEditor.ParseExpression() const string connectionStringSuffix = ".connectionstring"; const string providerNameSuffix = ".providername"; string name = String.Empty; bool connectionString = true; if (expression != null) { if (expression.EndsWith(connectionStringSuffix, StringComparison.OrdinalIgnoreCase)) { name = expression.Substring(0, expression.Length - connectionStringSuffix.Length); } else { if (expression.EndsWith(providerNameSuffix, StringComparison.OrdinalIgnoreCase)) { connectionString = false; name = expression.Substring(0, expression.Length - providerNameSuffix.Length); } else { name = expression; } } } return new Pair(name, connectionString); } public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair p = (Pair)parsedData; string name = (string)p.First; bool connectionString = (bool)p.Second; if (connectionString) { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetConnectionString", new CodePrimitiveExpression(name)); } else { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetConnectionStringProviderName", new CodePrimitiveExpression(name)); } } public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair p = (Pair)parsedData; string name = (string)p.First; bool connectionString = (bool)p.Second; ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[name]; if (connectionString) { return GetConnectionString(name); } else { return GetConnectionStringProviderName(name); } } public static string GetConnectionStringProviderName(string connectionStringName) { ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[connectionStringName]; if (setting == null) { throw new InvalidOperationException(SR.GetString(SR.Connection_string_not_found, connectionStringName)); } return setting.ProviderName; } public static string GetConnectionString(string connectionStringName) { ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[connectionStringName]; if (setting == null) { throw new InvalidOperationException(SR.GetString(SR.Connection_string_not_found, connectionStringName)); } return setting.ConnectionString; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Compilation { using System; using System.Security.Permissions; using System.CodeDom; using System.Configuration; using System.Globalization; using System.Web.UI; [ExpressionPrefix("ConnectionStrings")] [ExpressionEditor("System.Web.UI.Design.ConnectionStringsExpressionEditor, " + AssemblyRef.SystemDesign)] [AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class ConnectionStringsExpressionBuilder : ExpressionBuilder { public override bool SupportsEvaluate { get { return true; } } public override object ParseExpression(string expression, Type propertyType, ExpressionBuilderContext context) { // This code is also copied in ConnectionStringsExpressionEditor.ParseExpression() const string connectionStringSuffix = ".connectionstring"; const string providerNameSuffix = ".providername"; string name = String.Empty; bool connectionString = true; if (expression != null) { if (expression.EndsWith(connectionStringSuffix, StringComparison.OrdinalIgnoreCase)) { name = expression.Substring(0, expression.Length - connectionStringSuffix.Length); } else { if (expression.EndsWith(providerNameSuffix, StringComparison.OrdinalIgnoreCase)) { connectionString = false; name = expression.Substring(0, expression.Length - providerNameSuffix.Length); } else { name = expression; } } } return new Pair(name, connectionString); } public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair p = (Pair)parsedData; string name = (string)p.First; bool connectionString = (bool)p.Second; if (connectionString) { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetConnectionString", new CodePrimitiveExpression(name)); } else { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetConnectionStringProviderName", new CodePrimitiveExpression(name)); } } public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair p = (Pair)parsedData; string name = (string)p.First; bool connectionString = (bool)p.Second; ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[name]; if (connectionString) { return GetConnectionString(name); } else { return GetConnectionStringProviderName(name); } } public static string GetConnectionStringProviderName(string connectionStringName) { ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[connectionStringName]; if (setting == null) { throw new InvalidOperationException(SR.GetString(SR.Connection_string_not_found, connectionStringName)); } return setting.ProviderName; } public static string GetConnectionString(string connectionStringName) { ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[connectionStringName]; if (setting == null) { throw new InvalidOperationException(SR.GetString(SR.Connection_string_not_found, connectionStringName)); } return setting.ConnectionString; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AnnotationStore.cs
- GradientBrush.cs
- StateDesignerConnector.cs
- SQLStringStorage.cs
- PagerSettings.cs
- Model3DGroup.cs
- AccessibleObject.cs
- CatalogZone.cs
- Attribute.cs
- OptionUsage.cs
- StrongNameMembershipCondition.cs
- SourceFileInfo.cs
- DataGridViewCellMouseEventArgs.cs
- ClientOptions.cs
- LateBoundBitmapDecoder.cs
- StreamUpdate.cs
- sqlstateclientmanager.cs
- DetailsViewInsertEventArgs.cs
- BufferedGraphicsManager.cs
- NameValueCollection.cs
- TypedTableGenerator.cs
- XamlTypeMapper.cs
- NotifyCollectionChangedEventArgs.cs
- ComponentManagerBroker.cs
- PropagatorResult.cs
- ProxyGenerationError.cs
- XamlBrushSerializer.cs
- DockPattern.cs
- IIS7UserPrincipal.cs
- TrayIconDesigner.cs
- LineUtil.cs
- Latin1Encoding.cs
- _AutoWebProxyScriptEngine.cs
- XmlExceptionHelper.cs
- DataStreams.cs
- ButtonChrome.cs
- HttpConfigurationContext.cs
- SendingRequestEventArgs.cs
- webbrowsersite.cs
- ShaderEffect.cs
- SystemResources.cs
- DiffuseMaterial.cs
- MediaPlayerState.cs
- RequestQueryParser.cs
- BasicExpandProvider.cs
- DictionaryBase.cs
- SystemIcmpV6Statistics.cs
- PtsPage.cs
- IntegerValidatorAttribute.cs
- Listbox.cs
- HostedBindingBehavior.cs
- StyleSelector.cs
- DetailsViewInsertEventArgs.cs
- DataServiceRequest.cs
- RowTypeElement.cs
- StructuredCompositeActivityDesigner.cs
- SqlAliaser.cs
- MappingItemCollection.cs
- HttpHeaderCollection.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- SmtpAuthenticationManager.cs
- ViewUtilities.cs
- HandlerFactoryCache.cs
- CellTreeNode.cs
- ConfigurationManager.cs
- GPPOINT.cs
- WorkflowMarkupSerializationManager.cs
- BamlLocalizabilityResolver.cs
- ResolvedKeyFrameEntry.cs
- StatusBar.cs
- SettingsBase.cs
- DataListItem.cs
- InputReferenceExpression.cs
- mediapermission.cs
- DropShadowBitmapEffect.cs
- JapaneseCalendar.cs
- XPathSingletonIterator.cs
- BaseResourcesBuildProvider.cs
- FrameworkReadOnlyPropertyMetadata.cs
- ConsumerConnectionPoint.cs
- LeafCellTreeNode.cs
- SchemaHelper.cs
- LocatorManager.cs
- EntityContainer.cs
- WpfXamlType.cs
- MetadataPropertyAttribute.cs
- StaticContext.cs
- ControlDesignerState.cs
- DPAPIProtectedConfigurationProvider.cs
- HtmlElementErrorEventArgs.cs
- InternalDispatchObject.cs
- RectIndependentAnimationStorage.cs
- CompositeControl.cs
- MatrixTransform.cs
- URLIdentityPermission.cs
- ControlUtil.cs
- TypefaceMetricsCache.cs
- MenuItemAutomationPeer.cs
- ConfigurationCollectionAttribute.cs
- LogEntryDeserializer.cs